トップページ > 過去ログ > 記事閲覧
Relase時のビルドについて
名前:Dec 日時: 2010/10/31 17:29

お世話になります。 Visual Studio 2008 上でReleaseビルドを行ったのですが、 『fatal error LNK1257: コードの生成に失敗しました。』 というエラーがでてしまいビルドできませんでした。 Debugでは通常通りビルド可能です。 コードの生成や文字セットの設定はHPの設定方法に基づいて正しく設定してある状態です。 設定は確かなだけに、なぜReleaseでビルドできないのかがわからずに困っています。 理由やお気づきの点などございましたらご指摘いただけると幸いです。 DXライブラリはVer 3.04bを使用しています。 開発に用いているパソコンのOSはWindows7の64bit版です。 テストプログラムとして以下のコードでビルドを行ないました。 #include "DxLib.h" int ProcessLoop() { if( ProcessMessage() != 0 ) return -1; if( ClearDrawScreen() != 0 ) return -1; return 0; } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( TRUE ); //DXライブラリ if( DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK) != 0 ) return -1; //初期化と裏画面化 //メインループ while( ProcessLoop() == 0 ) { DrawFormatString(0,0,0xffffff,"表示テスト"); ScreenFlip(); } // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; }

Page: 1 |

Re: Relase時のビルドについて ( No.1 )
名前:管理人 日時:2010/10/31 17:55

うーん・・・何故でしょう・・・ よろしければコンパイル時の出力を全部載せていただけないでしょうか?
Re: Relase時のビルドについて ( No.2 )
名前:Dec 日時:2010/10/31 18:25

Release時のビルド出力は以下のようになりました。 1>------ ビルド開始: プロジェクト: Test, 構成: Release Win32 ------ 1>リンクしています... 1>fatal error C1047: オブジェクトまたはライブラリ ファイル 'C:\Program Files (x86)\ARToolKit\OpenVRML\dependencies\lib\libpng.lib' は、他のオブジェクトよりも古いコンパイラで作成されました。古いオブジェクトおよびライブラリを再度ビルドしてください。 1>LINK : fatal error LNK1257: コードの生成に失敗しました。 1>ビルドログは "file://c:\Users\(アカウント名)\Documents\Visual Studio 2008\Projects\C++\DxLib\Test\Test\Release\BuildLog.htm" に保存されました。 1>Test - エラー 1、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== なぜかfatal errorとして、今は関係のないARToolKitがでているのですがもしかしてこれが原因なのでしょうか? ARToolKitは以前に使用した経験があります。
Re: Relase時のビルドについて ( No.3 )
名前:いっち 日時:2010/10/31 19:26

私が考え付く理由は以下の通りです。 1)DXライブラリの一群のファイルが格納されているフォルダの中に libpng.lib が存在しない。 2)VC++によるDXライブラリの検索順位が ARToolKit よりも低い。 後者については以下の手順で確認できます。 メニューから「ツール」→「オプション」→ツリーから「プロジェクトおよびソリューション」→「VC++ディレクトリ」→ →"ディレクトリを表示するプロジェクト"リストボックすから「ライブラリファイル」 ディレクトリのリストが表示されると思うので ARToolKit のパスがあれば優先順位を下げてみてください。 (もしくは、DXライブラリのすべてのファイルをプロジェクトと同じフォルダに放り込んでもOKのはず) 上記はかなり場当たり的な対応です。将来的に問題が出るかもしれませんが、ライブラリの管理については自己責任でお願いします。 的外れでしたらごめんなさい。
Re: Relase時のビルドについて ( No.4 )
名前:Dec(解決) 日時:2010/10/31 20:18

いっちさんのご指摘の通り、ライブラリファイルの優先順位を変更したところReleaseでビルドができました。 DxLibとARToolKitのどちらにもlibpng.libがあったので、ライブラリ優先順位の高かったARToolKit側のファイルが読み込まれてしまったのですね。 ご指摘ありがとうございました。 これにて問題解決とさせていただきます。

Page: 1 |