Seite 1 von 1

[gelöst] qmake - .h .lib .dll korrekt angeben

Verfasst: 3. Juni 2008 19:02
von User
Ich möchte Python in meine Anwendung einbetten. Hierzu muss zuerst der Python-Interpreter eingebettet werden. Alle benötigten Pfade und Dateien möchte ich in die .pro des Projektes schreiben, was aber nicht wie erhofft läuft. Die direkt benötigten Files sind:

Code: Alles auswählen

D:\User\PythonSource\PCbuild8\win32debug\python25_d.lib
D:\User\PythonSource\PCbuild8\win32debug\python25_d.dll
D:\User\PythonSource\Include\python.h
Wie muss ich nun das .pro-File gestalten, damit alles anständig gefunden wird? So wie ich die Doku verstanden habe, habe ich in INCLUDEPATH den Pfad der .h - Files anzugeben, die Pfade der dazugehörigen Bibliotheken stehen im LIBS - Part. Wozu dient dann bitte der DEPENDPATH? Und warum brauche ich sowohl die .lib als auch die .dll, ich dachte hier reicht nur die .dll aus (ist zwar eher win32 als QT, aber hängt ja auch mit meinem Problem zusammen). Die Erklärungen in der qmake-Doku sind sehr kryptisch, und wie ich es drehe und wende, irgendwas wird entweder von qmake oder dann von VS2005 nicht gefunden. Hier mein letzter Versuch, der Code kompiliert, aber die DLL wird nicht gefunden und ich möchte mir die Arbeit sparen, sie jedesmal ins Arbeitsverzeichnis zu kopieren (kopieren nach Windows\System32 ist nicht möglich).

Code: Alles auswählen

TEMPLATE = vcapp
DEPENDPATH +=
INCLUDEPATH +=D:/User/PythonSource/Include  D:\User\PythonSource\PC

LIBS += D:/User/PythonSource/PCbuild8/win32debug/python25_d.lib

QT += opengl

HEADERS             = pythontestwidget.h
SOURCES             = main.cpp \
                      pythontestwidget.cpp


Verfasst: 3. Juni 2008 19:13
von PeterLustig
Du gibst an das du OpenGL benutzt, aber wo gibst du an das du Phonon benutzen willst? (Schau dir mal an was die Dokumentation zur Variable QT zu sagen hat, und geh davon aus das die Doc nicht ganz up2date ist ;))

Verfasst: 3. Juni 2008 19:20
von Christian81
Wo deine DLL liegt hat nichts mit irgendwelchen Einstellungen in der pro-Datei zu tun
In der pro-Datei gibt man
1. den Pfad zu den Headern
2. den Pfad zu den Import-Libs
an.

Wo später die DLL liegt interessiert weder Qt noch dem Compiler oder Linker. Deshalb bleibt Dir wohl nichts anderes möglich als die DLL entweder zu kopieren oder PATH zu erweitern.

Verfasst: 3. Juni 2008 19:23
von User
Ich sehe nicht, wo ich Phonon bräuchte, arbeite sowieso noch mit 4.3.x. Hast du dich vielleicht verlesen? Es geht um Python (die Skriptsprache) und nicht Phonon.

//EDIT:
Wo später die DLL liegt interessiert weder Qt noch dem Compiler oder Linker. Deshalb bleibt Dir wohl nichts anderes möglich als die DLL entweder zu kopieren oder PATH zu erweitern.
Ok, dann muss ich weiter kopieren, Umgebungsvariablen kann ich nicht ändern (studentischer Arbeitsplatz).

Verfasst: 3. Juni 2008 19:25
von PeterLustig
Tut mir leid, ich hab mich total verlesen. *schäm* Christian, wär nett wenn du die 3 Beiträge löscht. :$

Verfasst: 3. Juni 2008 19:31
von Christian81
User hat geschrieben: Ok, dann muss ich weiter kopieren, Umgebungsvariablen kann ich nicht ändern (studentischer Arbeitsplatz).
Du willst mir also sagen das ein 'SET PATH=blub' auf der Kommandozeile nicht geht? mhhh das glaube ich Dir mal nicht :)

Verfasst: 3. Juni 2008 19:47
von User
Oh, geht doch... nachdem ich feststellen durfte, dass die Eingabe case-sensitive ist und sogar Leerzeichen als Teil der Variable annimmt ;) . Allerdings gilt der Path offenbar nur für die aktuelle Instanz der Kommandozeile. Habe aber einen Workaround gefunden, ich kann im System-Dialog einen user-spezifischen Path generieren, den ich dann auf %Path% und dann das Verzeichnis mit der DLL gesetzt habe. Jetzt läuft der Spaß direkt, danke für die Hinweise.

Eine Frage habe ich dann aber: Du hast allgemein geschrieben
In der pro-Datei gibt man
1. den Pfad zu den Headern
2. den Pfad zu den Import-Libs
Welches Keyword ist nun für welchen Pfad? Die .lib kommen wohl in LIBS, die Header in DEPENDPATH oder INCLUDEPATH, aber wo ist nun genau der Unterschied zwischen dem DEPENDPATH und dem INCLUDEPATH? ist der INCLUDEPATH für die Header, die teil des Projektes sind und der DEPENDPATH für die Header, die benötigt werden, aber nicht zum Projekt gehören (wie bei mir python.h)?

Verfasst: 3. Juni 2008 19:49
von Christian81
DEPENDPATH kenn ich nicht und habs auch noch nirgends gesehen das es benutzt wurde.

Verfasst: 3. Juni 2008 20:04
von User
Habe eben noch ein wenig rumexperimentiert, offenbar ist DEPENDPATH dafür da, Header in anderen Verzeichnissen als dem Verzeichnis mit dem .pro - File als Bestandteile des Projekts einzubinden, also als Dateien in HEADERS. Vielleicht nützlich wenn man zwei Projekte schreibt, die sich irgendwo einen Header teilen und den man von beiden Projekten aus editieren möchte oder allgemein für große Projekte.