ich benutze den Qt Creator 2.4.0 und möchte innerhalb eines Projektes Funktionen eines Drittanbieters nutzen. Der Anbieter stellt dafür eine .lib, mehrere .dll (darunter eine, die genauso heißt wie die .lib) sowie mehrere Header-Dateien zur Verfügung.
Mein Ansatz war, die .lib über die Projektdatei als statische externe Bibliothek einzubinden, ich habe dafür den Wizard benutzt:
win32: LIBS += -LPfadZuExternerLib/ -lexterneLib
win32: PRE_TARGETDEPS += PfadZuExternerLib/ExterneLib.lib
Der Pfad zu den Header-Dateien wurde ebenfalls in der Projektdatei bekannt gemacht.
INCLUDEPATH += PfadZuHeaderdateien
DEPENDPATH += PfadZuHeaderdateien
Das Projekt wird auch problemlos kompiliert. Wird aber zur Laufzeit auf eine Funktion des Drittanbieters zugegriffen, kommt es zu einem Segmentation Fault und das Programm schmiert natürlich ab mit dem Fehlercode: -1073741819 (ungültiger Zugriff eines Prozesses auf einen Bereich außerhalb des ihm zugeordneten Speicherbereiches)
Mich wundert es, dass die Funktionen in den Headern über dllimports bekannt gemacht werden. Ist das auch bei Funktionen aus einer .lib so? Ein Beispiel:
extern "C" __declspec(dllimport) HANDLE WINAPI NameDerFunktion(...);
Nach einer .dll beim Einbinden der .lib wurde ich aber nie gefragt. Ein Einbinden der dll zur Laufzeit über die QLibrary-Klasse funktioniert scheinbar auch nicht, der Rückgabewert von isLoaded gibt immer "false" zurück.
Hat jemand eine Idee, was ich falsch mache? Vielen Dank im Voraus!
Gruß Matthias