2009-03-25 9 views
0

Ich habe ein Qt-Projekt, das ich eine Debug-Konsole während ich entwickle angezeigt hatte, bin ich über das Produkt versenden ich den Qmake Konsolenbefehl entfernt: CONFIG + = KonsoleWas fehlt mir in meinen Umgebungsvariablen, damit mein Linker mit LNK1181 fehlschlägt?

Allerdings, wenn ich, dass ich tue erhalten folgende Fehlermeldung:

link /LIBPATH:"c:\Qt\4.5.0\lib" /NOLOGO /INCREMENTAL:NO /LTCG /MANIFEST /MANIFESTFILE:"./_obj/win32\Lynx.intermediate.manifest" /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /VERSION:4.00 /OUT:bin\win32\Lynx.exe @C:\DOCUME~1\hannentp\LOCALS~1\Temp\nm1C9.tmp 
link_.exe /LIBPATH:c:\Qt\4.5.0\lib /NOLOGO /INCREMENTAL:NO /LTCG /MANIFEST /MANIFESTFILE:./_obj/win32\Lynx.intermediate.manifest /SUBSYSTEM:WINDOWS /MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*' /VERSION:4.00 /OUT:bin\win32\Lynx.exe @C:\DOCUME~1\hannentp\LOCALS~1\Temp\nm1C9.tmp~ 
LINK_ : fatal error LNK1181: cannot open input file 'name='Microsoft.Windows.Common-Controls'' 
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\Bin\link.EXE"' : return code '0x49d' 
Stop. 

ich denke, dass eine lib-Pfad jedoch fehlt, muss ich eine große Anzahl von Umgebungsvariablen eingerichtet haben und arbeiten bereits. Hat jemand das gesehen und kennt den Speicherort der Microsoft.Windows.Common-Controls?

Auch ich bin dies von buildbot so VS2008 IDE ist nicht wirklich irgendwo, wo ich Hilfe mit.

+0

Also, die # Pragma in einem gemeinsamen Header wie hier vorgeschlagen (http://social.microsoft.com/Forums/en-US/vcgeneral/thread/fd23824b-f1c7-4aeb-8a5d-238496470aaf/) nicht Arbeite für dich? – dirkgently

+0

dirkgently, nein es nicht leider –

+0

Jemand bitte den Tippfehler im Titel – Anton

Antwort

3

Es scheint, dass die Befehlszeile ist nur underquoted:

"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" 

In der zweiten Zeile werden die Angebote und die Linker behandelt jedes Wort als Objekt Link gegangen. Sie sollten wahrscheinlich nur Anführungszeichen hinzufügen (wenn Sie das Argument hinzugefügt haben), dh. beginnen und enden mit "\" (3 Zeichen anstelle eines Zitats). Es scheint, dass andere Quellen dies auch vorschlagen, also experimentiere damit.

+0

Es stellte sich heraus, dass ich eine link.exe und eine link_.exe hatte, wenn ich link.exe auf die eine Seite verschoben und die link_.exe umbenannt hatte, funktionierte es perfekt. Nicht sicher warum, aber eine andere Frage gestellt haben, um zu sehen. –

0

Ich hatte den Eindruck, dass Qt's kostenlose Version nur mit Mingw, NICHT Visual Studio, erstellt. Wenn Sie die kostenlose Version von Qt verwenden, könnte dies das Problem sein. Wenn Sie mit Mingw nicht vertraut sind, hat es die GCC-Compiler-Toolchain optimiert, die unter Windows mit ihren .lib-Dateien für verschiedene Windows-spezifische Bibliotheken verwendet wird.

+0

Ich fixiert die kommerzielle Version verwenden. –

+1

Kostenlose Version von Qt kann mit Visual Studio erstellt werden. Sie müssen es nur selbst erstellen, während die vorkompilierte Mingw-Version von Nokia geliefert wird. – Paul

0

Von dem, was ich auf der Website von Microsoft gefunden habe, ist Comctl32.dll die Bibliothek, die Sie suchen müssen, und fügen Sie ihren Pfad zu Ihrer Build-Umgebung hinzu. Schau, ob das funktioniert.

1

Ich bin mir nicht sicher, ob Sie in diesem Bereich weitere Fortschritte erzielt haben.

Ich hatte den sehr ähnlichen Fehler, aber mit msvc2005 (nicht IDE). Ich habe keine Instanzen von link_.exe, daher kann ich Ihre Fehlerbehebung nicht bestätigen.

Wenn i aktiviert Konsole (CONFIG + = Konsole), ist es nicht gelungen, durch anderes Problem zu verbinden - nicht Einstiegspunkt finden konnte:

Fatal Error LNK1561: Entry Point Must Be Defined 

Ich fand zufällig http://support.microsoft.com/kb/140597 , die über Backslash spricht Zeichen, dachte es wird gesagt, dass für msvc 4 ist und später behoben wurde. Ich habe meinen Code überprüft, und ich habe nachgestellte Schrägstriche, wenn der LIBPATH in .pro-Datei angegeben ist. Ich habe diese behoben und das Ding zum kompilieren gebracht (CONFIG + = console). Jetzt habe ich die Möglichkeit, entfernt und mit unterschiedlichem, aber etwas logischen Problem:

MSVCRT.lib(crtexew.obj) : error LNK2001: unresolved external symbol [email protected] 
app.exe : fatal error LNK1120: 1 unresolved externals 

an Ihrem Nmake Ausgang Sehen, ich frage mich, ob das Mischen nach vorne und Schrägstrich Zeichen in

/MANIFESTFILE:"./_obj/win32\Lynx.intermediate.manifest" 

dieses Problem verursacht. Obwohl es etwas anderes könnte.

Hinweis, ich habe auch CONFIG -= embed_manifest_exe in meiner .pro-Datei. Mein Nmake aus sieht wie folgt aus:

link /LIBPATH:"c:\Apps\boost\boost_1_38\lib" /NOLOGO /INCREMENTAL:NO /LTCG /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /OUT:valueForSba.exe @C:\DOCUME~1\LOCALS~1\Temp\nm398.tmp 
Creating library app.lib and object app.exp 
MSVCRT.lib(crtexew.obj) : error LNK2001: unresolved external symbol [email protected] 
app.exe : fatal error LNK1120: 1 unresolved externals 

ich nicht auch alle qt Klassen in diesem Projekt mit, und verwenden Sie nur qmake Makefile zu bekommen. (qmake aus 4.5.1 kommerzieller Edition)

0

Ich habe das gleiche Problem leiden. Es stellte sich heraus, dass dieser PC zwei verschiedene MSVC-Versionen (7.1 und 8.0) hat. Obwohl das SDK für 8.0 erstellt wurde, wurde es für 7.1 in QtCreator Tools-> Optionen-> Qt4-> Qt4-Versionen ausgewählt. Also habe ich es auf Version 8.0 umgestellt und es funktioniert jetzt gut.