Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Qt4 dynamische Plugins mit Libs

  1. #1
    Registrierter Benutzer
    Registriert seit
    31.08.2002
    Ort
    Berlin
    Beiträge
    128

    Qt4 dynamische Plugins mit Libs

    Hi,

    hab hier ein sehr komisches Problem zur Zeit.
    Habe mehrere selbst geschriebene dynamische Low-Level Plugins für Qt4 geschrieben. Bis jetzt lief alles Problemlos nur jetzt will ich ein Plugin mit einer anderen Library dazulinken und da gibt es Trouble mit Qt4.
    Qt4 kriegt dieses Plugin nicht geladen ich bekomme per QPluginLoader immer ein Null Zeiger zurückgeliefert. Wenn ich allerdings die Library nicht dazulinke sondern fest ein kompiliere mit dem Programm funktioniert das Plugin wieder.

    Als Buildtool benutze ich cmake
    Hier mal der relevante Abschnitt in der CMakeList.txt
    Code:
    QT4_WRAP_CPP( MOC_SDP sdp.h )
    ADD_LIBRARY( sdp SHARED ../../core/property_data.cpp  sdp.cpp sdp_config.cpp ${MOC_SDP} )
    TARGET_LINK_LIBRARIES( sdp serdisp )
    und hier vom Linker der Aufruf:
    Code:
    /usr/bin/c++  -fPIC   -shared -Wl,-soname,libsdp.so -o libsdp.so "CMakeFiles/sdp.dir/__/__/__/__/src/core/property_data.o" "CMakeFiles/sdp.dir/sdp.o" "CMakeFiles/sdp.dir/sdp_config.o" "CMakeFiles/sdp.dir/moc_sdp.o" -lserdisp
    Gruss,
    xmarvel

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Ist die andere Library für den Runtimelinker auffindbar?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer
    Registriert seit
    31.08.2002
    Ort
    Berlin
    Beiträge
    128
    ja ldconfig hab ich ausgeführt das Linken und das Compilieren des Plugins funktioniert auch.

    Gruss,
    xmarvel

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Hmm.

    Du kannst nach dem fehlgeschlagenen Loading die globale Variable errno auswerten, bzw mit strerror()
    Vielleicht kommst du so zu besseren Informationen.

    Wenn du
    $ ldd plugin.so

    machst, wird dann die zusätzliche Lib gefunden?

    Und um sicher zu gehen: das Programm wird im selben Environment gestartet das, richtig?
    (Manchmal vergisst man, daß man in einer interaktiven Shell ein anderes Environment hat, als in der Desktopumgebung)

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer
    Registriert seit
    31.08.2002
    Ort
    Berlin
    Beiträge
    128
    Zitat Zitat von anda_skoa Beitrag anzeigen
    Hmm.

    Du kannst nach dem fehlgeschlagenen Loading die globale Variable errno auswerten, bzw mit strerror()
    Vielleicht kommst du so zu besseren Informationen.

    Wenn du
    $ ldd plugin.so

    machst, wird dann die zusätzliche Lib gefunden?

    Und um sicher zu gehen: das Programm wird im selben Environment gestartet das, richtig?
    (Manchmal vergisst man, daß man in einer interaktiven Shell ein anderes Environment hat, als in der Desktopumgebung)

    Ciao,
    _
    danke daran lag es LD_LIBRARY_PATH war nicht auf den Pfad der Lib gesetzt.

    Daraus erschließt mich jetzt die Frage ist dafür der Programmierer beim übersetzen "verantwortlich" das alle Library Pfade vom System richtig gesetzt werden oder der User?

    Gruss,
    xmarvel

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Der. der es installiert.

    Bei einem Distributionspaket der Packager, bei einem selbst kompilierten Programm der User, bei einem externen Installer der Auslieferer/Programmierer

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •