2012-09-07 14 views
5

So wie der Titel der Frage sagt, frage ich mich speziell, wie Sie den Pfad zu einer DLL-Datei in der eigentlichen Projektdatei enthalten. Ich weiß, es ist die bessere Praxis, die DLL-Datei in die Projektdatei aufzunehmen, aber ich würde immer noch gerne wissen, ob das möglich ist.QT - Geben Sie den DLL-Pfad in pro an. Datei

Momentan besteht meine .pro-Datei aus den folgenden;

QT  += core gui 

TARGET = Test 
TEMPLATE = app 

win32 { 
    INCLUDEPATH += "D:/Projects/Build Output/include/" 

    CONFIG(debug, debug|release) { 
     LIBS += "D:/Projects/Build Output/libs/debug/myLib.lib" 
     LIBS += "D:/Projects/Build Output/bin/x86 debug/myLib.dll" 
    } 
    else { 
     LIBS += "D:/Projects/Build Output/libs/release/myLib.lib" 
     LIBS += "D:/Projects/Build Output/bin/x86 release/myLib.dll" 
    } 
} 

SOURCES += main.cpp\ 
    mainwindow.cpp 

HEADERS += mainwindow.h 

FORMS += mainwindow.ui 

Wäre cool, nur zu wissen, dass es getan werden kann, danke im Voraus für Ihre Hilfe :).

+2

Sie schließen sie richtig afaik ein, etwas anderes muss falsch sein. – Rapptz

Antwort

2

Wenn Sie möchten, dass die generierte EXE ihre abhängigen DLL-Dateien automatisch finden kann, wenn Sie sie ausführen, dann kann sie nicht für implizite DLL-Verknüpfungen verwendet werden (d. H. Verknüpfung mit .lib-Dateien wie in Ihrem Beispiel). Windows hat a fixed search sequence, um die erforderlichen DLL-Dateien zu finden. Keine dieser Sequenzen kann in eine QT-Pro-Datei eingefügt werden. So ist die folgende Aussage hat keine Auswirkung nur macht QT weiß, dass die DLL Lib/.a-Datei in diesem Pfad suchen:

LIBS += "D:/Projects/Build Output/bin/x86 debug/myLib.dll" 

Der nächste Ansatz könnte die dll Wege wie die Makros in der Pro-Datei definieren . Dann benutze LoadLibrary zu explicitly load dlls von diesen Pfaden in deiner c/C++ Quelldatei. Natürlich müssen Sie den DLL-Pfad nicht in die .pro-Datei (Windows) einfügen, wenn Sie mit expliziter Verknüpfung anstelle von impliziter Verknüpfung arbeiten können,

+1

Danke für deine Antwort :). Ich habe das hauptsächlich gefragt, weil ich mir die Videos von voidRealms QT auf Youtube angeschaut habe. In seinem etwas älteren Video macht er das oben und es hat gut funktioniert. (Das Video speziell; http://www.youtube.com/watch?v=9JTooLxhmC0), also war ich nur neugierig, warum es für mich nicht funktionierte. * In seinem Video benutzt er tatsächlich eine gemeinsame Bibliothek wie ich, aber ich nehme an, dass es knapp unter 1 Jahr alt ist. Etwas muss sich geändert haben? – Danran

+3

In 4:20 in das Video kopiert er manuell die DLL in das Verzeichnis der exe, deshalb funktioniert es für ihn :) – xiaobai

0

. Alles, was Sie tun müssen, ist, all Ihre externen DLL-Dateien in ein Verzeichnis zu legen und dieses Verzeichnis zur Pfadumgebungsvariablen hinzuzufügen. (wie die angenommene Antwort). Ich füge das hier hinzu, um nur eine wichtige Tatsache zu erwähnen: RESTART QT CREATOR, damit dies funktioniert, um die neue PATH-Umgebungsvariable neu zu laden.

Verwandte Themen