2

QT 4.5 リリースとリンクしようとすると、このエラー メッセージが表示されます

致命的なエラー C1047: オブジェクトまたはライブラリ ファイル 'c:\qt\2009.02\qt\lib\qtmain.lib' は、他のオブジェクトよりも古いコンパイラで作成されました。古いオブジェクトとライブラリを再構築する

QT 4.5 をコンパイルするために現在のプロジェクトに同じコンパイラを使用しています (VS 2005 SP1 でコンパイルするかどうかはわかりませんが、現在 SP1 を使用しています)。この問題は、私がコンパイルしている別のライブラリで GL が有効になっている場合 (VS2005 によって自動的に LTCG に切り替えられた場合) にのみ発生します。他のすべてのライブラリですべての最適化を無効にした場合にのみ、ビルドを機能させることができました (LTCG を有効にできません)。

QT 4.5 を LTCG リリース ビルド プロセスで動作させる方法はありますか? 再コンパイルする必要がある場合、nmake にどのフラグを設定する必要がありますか?

ちなみにプロジェクトは QT 4.5 Visual Studio Add-in で作成されており、リリースビルドでは GL が自動的にオフになっています。

4

2 に答える 2

0

Qwtで例をビルドしようとしているときに同様の問題に遭遇し、あなたがしたのと同じことをしました。すべての Makefile (Makefile.Release) から -GL スイッチを削除しました。少し面倒ですが、すべての例が実行されるようになりました。

このスレッドのコメントから、 Qt 4.5.0 は現在 /GL および /LTCG フラグを使用しているようです。

更新 2010-01-14 -GL / -LTCG の問題全体を取り除くための新しい方法:

C:\Qt\4.5.1\mkspecs\win32-msvc2008\qmake.conf (または MSVC のバージョンに対応するもの) を編集し、行を変更します。

QMAKE_CFLAGS_RELEASE    = -O2 -MD -GL

QMAKE_CFLAGS_RELEASE    = -O2 -MD

QMAKE_LFLAGS_RELEASE    = /INCREMENTAL:NO /LTCG

QMAKE_LFLAGS_RELEASE    = /INCREMENTAL:NO

これで、作成された Makefile にはこれらのフラグが存在しなくなります。

更新 2010-03-22 Qt 4.6.1 で元の問題が修正されたようです。試してみてください。

于 2009-09-03T20:30:43.250 に答える
0

QT 4.5 のコンパイル オプションを詳しく見てみると、LTCG を有効にするフラグがあります。デフォルトでは無効になっています。

于 2009-10-29T02:44:58.307 に答える