2011-12-02 5 views
5

stato installato un ambiente pulito su un nuovo computer con Windows 7 con:LNK4099 linker avviso con nuova installazione di Qt SDK e Visual C++ 2008

  • Visual Studio 2008 SP1
  • Qt SDK 1.1.4

Quindi ho creato un nuovo progetto in Qt Creator. Ho scelto "Qt Gui Application" in "Qt Widget Project" e ho avuto desktop di destinazione con Visual C++ 2008, entrambi debug & (fondamentalmente impostazioni di default).

Poi ho premuto Genera e ha ottenuto ....

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 

Devo mancare qualcosa di ovvio - sicuramente l'esperienza out-of-box con Qt non dovrebbe coinvolgere gli avvertimenti del compilatore/linker? !?!

Come si risolve questo avviso del linker? Preferisco trattare gli avvertimenti come errori, quindi ... mi piacerebbe farlo correggere.

risposta

0

Impossibile trovare una soluzione a questo. Sono sicuro che la ricompilazione di Qt risolverà il problema, ma per semplicità voglio rimanere fedele a ciò che viene installato con l'SDK per ora.

3

Il percorso per vc90.pdb incorporato in qtmain_win.obj non è lo stesso percorso impostato nelle impostazioni del linker.

Per le istruzioni contenute in this article:

Nelle impostazioni del linker, Properties->Linker->Debugging->Generate Program Database File ha il valore $(TargetDir)$(TargetName).pdb.

Nelle impostazioni C/C++, Properties->C/C++->Output Files->Program Database File dovrebbe anche essere impostato $(TargetDir)$(TargetName).pdb (il valore predefinito è $(IntDir)\vc90.pdb).

In caso contrario, è possibile provare a pulire e ricostruire la build di Debug.

+2

Sto utilizzando Qt Creator, non Visual C++. Come posso impostare queste impostazioni in Qt Creator? –

+0

È possibile disabilitare l'uso dei file '.pdb' (non credo che Qt Creator possa usarli) impostando' QMAKE_CFLAGS_RELEASE =/Z7' in 'qmake.conf' per win32-msvc2008. Questo incorpora tutte le informazioni di debug nei file '.obj'. Se hai bisogno di usare i file '.pdb', assicurati che' qmake.conf' sia impostato [come questo] (http://developer.qt.nokia.com/faq/answer/how_to_build_pdb_for_release_version_of_qt) – Gnawme

+0

Stai suggerendo di ricompilare Qt? Non c'è modo di farlo funzionare correttamente con i binari predefiniti forniti da Nokia in Qt SDK? –

0

Aggiungere

QMAKE_LFLAGS += /ignore:4099

al file .pro.

se si desidera non creare file PDB per i vostri eseguibili o Library Aggiungi

QMAKE_CXXFLAGS += /Z7

così le informazioni di debug sarà messo in file obj.

Forse è necessario eliminare tutti i Makefile * per aggiornare le regole di costruzione. Testato in Qt Creator 2.4.1 con MSVC 2008 SP1

+0

-1 La disattivazione degli avvisi del linker non risolve il problema. La soluzione è semplice: copia il file vc90.pdb generato durante la creazione della libreria statica qtmaind.lib nella stessa directory in cui risiede qtmaind.lib. – IInspectable

1

Installazione separata Qt Library (4.8.2) e Qt Creator (2.5.2) hanno funzionato qui. Non ricevo più l'avviso LNK4099.

Assicurarsi di rimuovere le impostazioni che QtSDK lascia alle spalle: i tasti KHCU\Software\Nokia e la cartella %APPDATA%\Nokia.

L'aggiornamento manuale della libreria QT all'interno del gestore pacchetti QtSDK potrebbe funzionare.

0

Ciò accade quando si spostano le directory Qt (ad esempio quelle che contengono libs/pdbs) in una directory diversa dopo la compilazione. Il percorso del file PDB è incorporato nelle librerie, quindi quando lo sposti il ​​linker non riesce a trovarlo.

Sembra per me che il problema più sicuro/più pulito è ricostruire Qt nella nuova posizione.