128 Stimmen

Hinzufügen einer externen Bibliothek zum Qt Creator Projekt

Wie kann ich eine externe Bibliothek in ein mit Qt Creator RC1 (Version 0.9.2) erstelltes Projekt einfügen? Zum Beispiel, die win32 Funktion EnumProcesses() erfordert Psapi.lib in das zu erstellende Projekt aufgenommen werden.

227voto

Die richtige Vorgehensweise ist wie folgt:

LIBS += -L/path/to -lpsapi

Auf diese Weise wird es auf allen von Qt unterstützten Plattformen funktionieren. Die Idee ist, dass Sie das Verzeichnis vom Bibliotheksnamen trennen müssen (ohne die Erweiterung und ohne das Präfix "lib"). Wenn Sie eine Windows-spezifische Bibliothek einbinden, spielt dies natürlich keine Rolle.

Falls Sie Ihre lib-Dateien im Projektverzeichnis speichern möchten, können Sie sie mit der Option $$_PRO_FILE_PWD_ variabel, z.B.:

LIBS += -L"$$_PRO_FILE_PWD_/3rdparty/libs/" -lpsapi

3 Stimmen

Ist es möglich, eine Umgebungsvariable als Pfad zu einer Bibliothek anzugeben? Ich frage, weil das Schreiben von hart kodierten Pfadnamen in die .pro-Datei zu Problemen führen würde, wenn ein Projekt von mehreren Personen entwickelt wird, die möglicherweise nicht alle Bibliotheken an denselben Orten installiert haben.

0 Stimmen

Das hat bei mir funktioniert, aber wenn ich ein vs-Projekt mit qmake -tp vc finde ich keine Libs-Namen in Additional Dependencies des Projekts, aber das vs Projekt läuft gut. Bedeutet das, dass es einige andere Methoden hinzuzufügen ist Additional Dependencies in vs?

1 Stimmen

Ich glaube nicht, dass Sie einen Pfad für eine integrierte Windows-Bibliothek angeben müssen. Unsere .pro-Dateien haben Zeilen wie diese im Abschnitt win32: LIBS += -lGdi32 .

26voto

dirkgently Punkte 104289

Verwenden Sie qmake Projekte? Wenn ja, können Sie eine externe Bibliothek hinzufügen, indem Sie die LIBS variabel. z.B:

win32:LIBS += path/to/Psapi.lib

1 Stimmen

Entschuldigung für lahme Frage, aber sollte psapi Bibliothek bereits vorgebaut werden oder QtCreator kümmert sich um den Bau es?

12voto

martin Punkte 129

LIBS += C:\Program Dateien \OpenCV\lib

wird nicht funktionieren, weil Sie Leerzeichen in den Programmdateien verwenden. In diesem Fall müssen Sie Anführungszeichen hinzufügen, damit das Ergebnis wie folgt aussieht: LIBS += " C:\Program Dateien \OpenCV\lib " . Ich empfehle, Bibliotheken an Stellen zu platzieren, die nicht im Leerraum liegen ;-)

0 Stimmen

Die neuesten Versionen von Qt (Creator) wollen immer (einzelne) Schrägstriche als Verzeichnistrennzeichen. Die einzige Ausnahme ist, wenn Sie den "system"-Befehl unter Windows verwenden. Dann müssen Sie das System mit einem umgekehrten Schrägstrich füttern, d.h. mit zwei umgekehrten Schrägstrichen. Um alle Schrägstriche durch zwei Schrägstriche zu ersetzen, können Sie wie folgt vorgehen: WINDIR = $$DIR , WINDIR ~=s,/,\\,g

8voto

Der Fehler, den Sie meinen, ist auf einen fehlenden zusätzlichen Include-Pfad zurückzuführen. Versuchen Sie, ihn mit hinzuzufügen: INCLUDEPATH += C:\path\to\include\files\ Hoffentlich funktioniert es. Mit freundlichen Grüßen.

6voto

QT-ITK-VTK-Help Punkte 538

Und um mehrere Bibliotheksdateien hinzuzufügen, können Sie wie folgt schreiben:

INCLUDEPATH *= E:/DebugLibrary/VTK E:/DebugLibrary/VTK/Common E:/DebugLibrary/VTK/Filtering E:/DebugLibrary/VTK/GenericFiltering E:/DebugLibrary/VTK/Grafik E:/DebugLibrary/VTK/GUISupport/Qt E:/DebugLibrary/VTK/Hybrid E:/DebugLibrary/VTK/Imaging E:/DebugLibrary/VTK/IO E:/DebugLibrary/VTK/Parallel E:/DebugLibrary/VTK/Rendering E:/DebugLibrary/VTK/Utilities E:/DebugLibrary/VTK/VolumeRendering E:/DebugLibrary/VTK/Widgets E:/DebugLibrary/VTK/Wrapping

LIBS *= -LE:/DebugLibrary/VTKBin/bin/release -lvtkCommon -lvtksys -lQVTK -lvtkWidgets -lvtkRendering -lvtkGraphics -lvtkImaging -lvtkIO -lvtkFiltering -lvtkDICOMParser -lvtkpng -lvtktiff -lvtkzlib - lvtkjpeg -lvtkexpat -lvtkNetCDF -lvtkexoIIc -lvtkftgl -lvtkfreetype -lvtkHybrid -lvtkVolumeRendering -lQVTKWidgetPlugin -lvtkGenericFiltering

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X