dll dynamisch laden

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
Benutzeravatar
Jürgen
Beiträge: 20
Registriert: 20. Juni 2008 08:05

dll dynamisch laden

Beitrag von Jürgen »

Hallo,
ich benutze den QT-Creator und versuche verzweifelt eine dll dynamisch in eine einfache QT-Konsoleanwendung zu laden. Nach dem Studium der QT-Hilfe scheint mir dazu der "dlopen(...)"-Befehl das Mittel der Wahl zu sein. Leider ist dieser Befehl aber wohl in der "dlfcn.h" definiert.
Beim kompilieren der Zeile #include <dlfcn.h> erhalte ich die Meldung " dlfcn.h: no such file or directory>". Es gibt die Datei mehrfach im QT-Installationsverzeichnis, aber meinem Projekt scheint da irgendeine Pfad zu fehlen.

Code: Alles auswählen

#include <QtCore/QCoreApplication>
#include "../testLibDlg/testLibDlg_global.h"
#include <dlfcn.h>
#include <stdio.h>


int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    void *handle;
    char *error;

    handle = dlopen("D:/C++QT/testLibDlg-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK__Debug/debug/testLibDlg.dll", RTLD_LAZY);
    if (!handle) {
        fprintf(stderr, "%s\n", dlerror());
        exit(EXIT_FAILURE);
    }

    dlerror();    /* Clear any existing error */
    [...]

Danke schon mal
Jürgen
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: dll dynamisch laden

Beitrag von franzf »

Jürgen hat geschrieben:Nach dem Studium der QT-Hilfe scheint mir dazu der "dlopen(...)"-Befehl das Mittel der Wahl zu sein.
Wie das? Qt bietet explizit QLibrary für solche Zwecke. Wo genau liest du in der Qt-Hilfe, dass man dafür dlopen nehmen soll?!?

Desweiteren ist Laden zur Laufzeit hier unnötig. Du willst eigentlich dynamisch Linken, also zur Linktime des Programms die externe DLL feste an dein executable binden. Schau dir dazu den Eintrag "LIBS" in der Doku zum Thema "qmake Variable Reference" an (Im Qt Assistant suchts sich ganz leicht).
Antworten