Seite 1 von 1

Qt DLL in Qt einbinden

Verfasst: 7. Dezember 2010 22:43
von bibo
Hallo!

Ich bin zwar neu hier, hab auch schon die Suche benutzt, aber noch nichts gefunden, was auf meine Problemstellung hin helfen könnte - oder ich habs übersehen.

Anyway, ich hab 2 Projekte erstellt, eines ist eine Bibliothek (dynamisch, kein Qt Plugin) und das andere eine ausführbare Datei. In der .pro-Datei der ausführbaren Datei steht (nur der die Bibliothek betreffende Datei):

Code: Alles auswählen

unix:LIBS += -L/home/vmbibo/Desktop/STSources/SourceCode/mSTGoogleCalendar-build-desktop
unix:LIBS += -lmSTGoogleCalendar
und in der .h-Datei verwende ich das include folgendermaßen:

Code: Alles auswählen

#include "../mSTGoogleCalendar/mstgooglecalendar.h"
Ich entwickle unter Linux (Qt Creator, Qt 4.7.0). Die Bibliothek erstellt sich soweit korrekt und ich denke, dass der Fehler nicht bei ihr liegt, das Template ist ja vom Creator selber erstellt worden.

Will ich aber das Programm ausführen ergibt sich ein sehr seltsames verhalten:
Aus dem Creator heraus lässt sich das Programm nicht starten; es erscheint folgende Fehlermeldung:
Starte /home/vmbibo/Desktop/STSources/SourceCode/mSemTask-build-desktop/mSemTask...
/home/vmbibo/Desktop/STSources/SourceCode/mSemTask-build-desktop/mSemTask: error while loading shared libraries: libmSTGoogleCalendar.so.1: cannot open shared object file: No such file or directory
/home/vmbibo/Desktop/STSources/SourceCode/mSemTask-build-desktop/mSemTask beendet, Rückgabewert 127
Also habe ich versucht, die Bibliothek in das Verzeichnis zu kopieren, in derm die Anwendung liegt - keine Veränderung.

Dann hab ich mal versucht, das Programm über den Dateimanager zu starten - ging auch nicht.

Die einzige Möglichkeit, das Programm zu starten, war in die Konsole zu gehen und das Programm über den Befehl ./mSemTask zu starten.

Ich kann mir aber nicht vorstellen, dass das die einzige Möglichkeit sein soll und wollte deswegen mal nachfragen, ob ich irgendwas übersehen/vergessen/ignoriert hab?

So Debuggen ist unglaublich mühsam, wär cool, wenn ich den Umstand ändern könnte!

TIA
Lukas

Verfasst: 7. Dezember 2010 23:33
von padreigh
deine Fehlermeldung besagt das er die LIB nicht findet - beim AUSFÜHREN!

Reincompiliert wird die ok.

Ich empfehle dir mal "man ldd" zu lesen, ist wertvoll zur Diagnose von Linkfehlern ... damit siehst du welche libs im executable verwerdet werden sollen und wo er die herholt (auch gut wenn man verschiedenne Versionen derselben lib unter demselben Namen irgendwo im Pfad hat) und auch was er nicht findet.

Was Abhilfe schafft ist im QtCreator auf die Project-Settings gehen und die RUN Umgebung anpassen (LD_LIBRARY_PATH=pfad/zur/lib hinzufügen).

Verfasst: 8. Dezember 2010 09:54
von bibo
Alles klar, vielen Dank, werd mir das mal genauer anschauen!

lg