2011-12-02 92 views
5

做了一個乾淨的新的Windows 7計算機上安裝有:LNK4099鏈接器警告乾淨安裝的Qt SDK和Visual C++的2008

  • 的Visual Studio 2008 SP1
  • 的Qt SDK 1.1.4

然後我在Qt Creator中創建了一個新項目。我在「Qt Widget Project」下選擇了「Qt Gui應用程序」,並將其定位到使用Visual C++ 2008的桌面,都調試了&版本(基本上是默認設置)。

然後我按建造,並得到了....

qtmaind.lib(qtmain_win.obj):-1: warning: LNK4099: PDB 'vc90.pdb' was not 
found with 'c:\QtSDK\Desktop\Qt\4.7.4\msvc2008\lib\qtmaind.lib' or at 
'C:\Users\JamesJ\Desktop\QtTest-build-desktop-Qt_4_7_4_for_Desktop_- 
_MSVC2008__Qt_SDK__Debug\debug\vc90.pdb'; linking object as if no debug info 

我必須失去了一些東西明顯 - 當然使用Qt的出的現成的經驗是不應該涉及編譯器/連接警告? !?!

如何解決此鏈接警告?我更願意將警告視爲錯誤,所以...我希望得到解決。

回答

0

無法找到解決方案。我確定重新編譯Qt可以解決這個問題,但爲了簡單起見,我想堅持現在與SDK一起安裝的內容。

3

嵌入在qtmain_win.obj中的vc90.pdb的路徑與連接器設置中設置的路徑不同。

每說明書中this article

在鏈接器設置,Properties->Linker->Debugging->Generate Program Database File的值爲$(TargetDir)$(TargetName).pdb

在C/C++設置,Properties->C/C++->Output Files->Program Database File被設置爲$(TargetDir)$(TargetName).pdb(其缺省值爲$(IntDir)\vc90.pdb)。

如果失敗,則可以嘗試清理並重新構建Debug版本。

+2

我正在使用Qt Creator,而不是Visual C++。如何在Qt Creator中設置這些設置? –

+0

通過在'qmake.conf'中爲'win32-msvc2008'設置'QMAKE_CFLAGS_RELEASE =/Z7',你可以禁止使用'.pdb'文件(我不相信Qt Creator可以使用它們)。這將所有調試信息嵌入到'.obj'文件中。如果您需要使用'.pdb'文件,請確保'qmake.conf'設置爲[像這樣](http://developer.qt.nokia.com/faq/answer/how_to_build_pdb_for_release_version_of_qt) – Gnawme

+0

您是否建議重新編譯Qt的?使用Qt SDK中諾基亞提供的開箱即用二進制文件無法正常工作嗎? –

0

添加

QMAKE_LFLAGS += /ignore:4099

你的.pro文件。

如果你想不是你的可執行文件或庫中創建.pdb文件

添加

QMAKE_CXXFLAGS += /Z7

所以調試信息將放在.obj文件。

您可能需要刪除所有Makefile *來更新構建規則。 使用MSVC 2008 SP1在Qt Creator 2.4.1中測試

+0

-1禁用鏈接器警告不能解決問題。解決方案很簡單:將構建靜態庫qtmaind.lib時生成的vc90.pdb文件複製到qtmaind.lib所在的同一目錄中。 – IInspectable

1

單獨安裝Qt庫(4.8.2)和Qt Creator(2.5.2)在這裏工作。我不再收到LNK4099警告。

確保刪除QtSDK留下的設置:KHCU\Software\Nokia%APPDATA%\Nokia文件夾中的鍵。

在QtSDK軟件包管理器中手動升級QT庫也可能奏效。

0

在編譯後將Qt目錄(即包含libs/pdbs的目錄)移動到其他目錄時,會發生這種情況。 PDB文件的路徑嵌入到庫中,因此當您移動它們時,鏈接程序找不到它。

似乎對我而言,最安全/最乾淨的問題是在新位置重建Qt。