2016-03-21 1 views
0

zu kompilieren Ich habe eine einfache Qt-Anwendung, die ich auf Windows in Qt "Qt 5.5 64-Bit für Desktop (MSVC 2013)" Aufforderung mit vcvarsall kompilieren möchte. Schläger ausgeführt.Linker-Fehler beim Versuch, Qt-Anwendung in der CLI unter Windows

qmake -version 

QMake version 3.0 
Using Qt version 5.5.1 in C:/Qt/5.5/msvc2013_64/lib 

In meiner .proDatei Ich habe nichts Besonderes, nur die Quellen und Header und:

QT += xml 
QT -= gui 

Als ich:

qmake 

Und:

nmake 

Es kompiliert gut, aber ich bekomme Tonnen von Fehlern wie t seine bei der Verknüpfung:

foo.obj : error LNK2019: unresolved external symbol "__declspec(dllimport 
) public: class QJsonValue __thiscall QJsonObject::value(class QString 
const &)const "([email protected]@@[email protected]@[email protected]@@Z) 
referenced in function ... 

Diese Anwendung kompiliert und läuft gut, wenn ich es in Qt Creator kompilieren so was bin ich dabei, wenn es in der CLI zu kompilieren versuchen?

Es kompiliert auch in der Ubuntu-Shell ohne Probleme.

Antwort

0

Dies ist, weil der Linker die DLL nicht finden kann. Sie müssen den Speicherort der DLL für den Linker angeben. Im Qt Creator wird die DLL durch den Pfad zur Qt-Version angegeben. Sie sollten den Pfad zum requiered Qt DLLs auf Ihren Befehl

+0

Also, wie füge ich die Pfade hinzu und wo? Wenn ich auf Ubuntu kompiliere, ist 'qmake && make' genug mit der gleichen Projektdatei ... warum nicht unter Windows? Ich verwende bereits die Verknüpfung von Qt zu einer Eingabeaufforderung, in der alle Umgebungsvariablen festgelegt werden sollen. – user2061057

+0

Es funktioniert nicht unter Windows, weil Windows manchmal seltsam ist ;-) Schauen Sie, ob sich der Qt/bin-Ordner in Ihrer PATH-Variable befindet. Btw: Warum verwenden Sie Visual Studio nicht, um es unter Windows zu kompilieren? – Liachtei

+0

Warum sollte ich Visual Studio verwenden? Qt Creator ist die beste IDE für Qt-Entwicklung und das ist sowieso eine CLI-Anwendung. Meine App funktioniert bereits in Qt Creator, daher verstehe ich nicht, welchen Unterschied Visual Studio machen würde. Der bin-Ordner von Qt befindet sich im PATH, weil ich, wie gesagt, die Verknüpfung von Qt zu einer Eingabeaufforderung verwende, in der alle Umgebungsvariablen gesetzt sind. – user2061057

0

Nach dem Versuch, dies mit CMake fügen ich endlich begriffen, was das ursprüngliche Problem war (CMake einen klaren Fehler dazu gab): Ich vcvarsall.bat ohne amd64 Parameter aufgerufen hatte, so Der Linker versuchte 64-bit Bibliotheken mit einer 32-bit Werkzeugkette zu verwenden. Natürlich waren die resultierenden Fehler wie immer verwirrend.

ich erneut ausgeführt:

vcvarsall.bat amd64 

... und ich war in der Lage sowohl zu kompilieren und verknüpfen mit qmake und CMake in Prompt-Umgebung Qt-Befehls nmake.

Unter Linux sind die Dinge etwas stabiler, da alles auf 64-Bit voreingestellt ist und solche Dinge nicht passieren.

Verwandte Themen