2010-04-24 228 views
0

今天我致力於在Qt中進行靜態鏈接。我用Qt4 with Visual Studio and static C runtime文章。第三步花了相當長的時間。完成後,我在VS 2008中打開了我的項目,製作了Build->Clean Solution並嘗試登錄Release。不幸的是我得到了鏈接錯誤:Qt中的靜態鏈接 - > VS 2008中的鏈接錯誤

警告 LNK4098:defaultlib 'LIBCMT.LIB' 衝突與使用其他庫的;使用 /NODEFAULTLIB:庫

錯誤LNK2019:無法解析的外部 符號 「私人:靜態結構 的QString ::數據的QString :: shared_null」 (shared_null @ QString的@@ 0UData @ 1 @?A) 函數引用「市民: __thiscall的QString :: QString的(無效)」(?? 0QString @@ QAE @ XZ)

錯誤LNK2019:無法解析的外部 符號 「私人:靜態結構 的QByteArray ::數據 的QByteArray :: shared_null」 (?shared_null @ QByteArray @@ 0UData @ 1 @ A) referen CED在功能 「市民: __thiscall的QByteArray ::的QByteArray(無效)」 (?? 0QByteArray @@ QAE @ XZ)

錯誤LNK2001:解析外部符號 「私人:靜態結構 的QByteArray ::數據 的QByteArray :: shared_null」 (shared_null @的QByteArray @@ 0UData @ 1 @?A)

錯誤LNK2001: 解析的外部符號 「公用: 靜態結構QMetaObject常量 了QDialog :: staticMetaObject」 (staticMetaObject @ QDialog的@ @ 2UQMetaObject @@ B)

錯誤LNK2001: 解析的外部符號 「公用: 靜態結構QMetaObject常量 了QDialog :: staticMetaObject」 (staticMetaObject @ QDialog的@@ 2UQMetaObject @@ B')

錯誤LNK2001: 解析的外部符號「公: 靜態結構QMetaObject常量 了QDialog :: staticMetaObject 「 (staticMetaObject @ QDialog的@@ 2UQMetaObject @@ B')

錯誤LNK2019:無法解析的外部符號」 公用:靜態枚舉QSysInfo :: WinVersion常量QSysInfo :: WindowsVer錫永」(?WindowsVersion @ QSysInfo @@ 2W4WinVersion @ 1 @ B)在功能上_WinMain引用@ 16

我做錯了什麼?幫助解決這個問題。

回答

0

確保在重新編譯Qt之後,在您自己的Qt項目上重新運行qmake。構建標誌也需要在項目中更新。

0

這些說明適用於VS2005。您得到的警告是針對lib多線程靜態C運行時庫。就我個人而言,我不會在qmake.conf中將這些值從-MD更改爲-MT和-MDd到MTd。我會離開他們,因爲他們是。無論如何,如果您使用的是Visual Studio解決方案,則必須轉到C++編譯器選項並將這些lib設置更改爲MT和MTd。

+0

試圖在項目設置和重建中設置-MDD。錯誤依然存在。還試圖生成* .pro文件和構建。有270多個鏈接錯誤。 – ChruS 2010-04-25 07:52:30

0

你可以發佈你用於配置和構建Qt的命令行嗎?在構建Qt時你有任何錯誤或重大警告嗎?除非您確定自己在做什麼,否則我建議不要更改.conf文件中的任何內容。它確實不應該是你需要做的。我還建議下載Windows源代碼分發的全新副本,或者如果您仍然擁有該存檔,請執行全新的解壓縮操作,只是爲了確保您之前的版本中沒有任何剩餘的文件可能未正確除去。然後,做你的配置和nmake。