2009-08-18 61 views
2

雖然嘗試與QT 4.5版本進行鏈接,我運行到此錯誤消息QT 4.5 - 如何在鏈接到QT庫時在VS2005中啓用LTCG?

致命錯誤C1047:該對象或 庫文件 'C:\ QT \ 2009.02 \ QT \ lib中\ qtmain.lib'是用 以上的編譯器創建的 其他對象;重建舊的對象和 庫

我一直在使用我當前的項目相同編譯器編譯QT 4.5(VS 2005,雖然我不知道如果我用VS2005 SP1或不編譯它,但我使用SP1現在)。當我正在編譯的另一個庫啓用了GL(由VS2005自動切換到LTCG)時,問題只會擡頭。如果我禁用所有其他庫中的所有優化(防止啓用LTCG),我只能讓構建工作。

有沒有辦法讓QT 4.5與LTCG版本構建過程一起工作?如果我必須重新編譯,需要爲nmake設置哪些標誌?

順便說一下,該項目是使用QT 4.5 Visual Studio加載項創建的,而對於發佈版本,GL已自動關閉。

回答

0

我剛剛遇到類似的問題,同時嘗試在Qwt中構建示例,並做了同樣的事情 - 我從所有Makefiles(Makefile.Release)中刪除了-GL開關。有點痛苦,但所有的例子現在運行。

從這個thread中的註釋看來,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已經修復了原來的問題。給它一個旋轉。

+0

我正在使用Qt 4.5.0,這讓我很失望 – Extrakun 2009-09-04 06:39:18

0

在仔細研究QT 4.5的編譯選項時,有一個啓用LTCG的標誌。它默認是禁用的。

+0

您是否重新編譯過Qt? – dwj 2010-01-14 22:10:28