Ich schreibe Code, der dynamische DLLs als Plugins verwendet.Fehlermeldung "undefined symbol" beim Laden der Bibliothek mit dlopen empfangen
Meine Kommandozeile die gemeinsamen Bibliotheken für den Bau wie folgt aussieht:
cc -shared -fPIC -o module.so -g -Wall module.c
Innerhalb des Moduls kann ich Funktionen aufrufen, die in jedem anderen gemeinsam genutzten Bibliothek, die im Hauptprogramm geladen wurde.
Allerdings kann ich nicht auf (exportierte) Funktionen zugreifen, die in der ausführbaren Datei selbst sind (ich bekomme undefined symbol
Fehler).
Mein Aufruf an dlopen
sieht wie folgt aus:
void *handle = dlopen(plugin, RTLD_NOW);
Kann jemand bitte beraten, wie kann mein Modul meine ausführbare Datei zurückrufen, ohne dass alle ausführbaren Datei der Utility-Funktionen in eine weitere gemeinsame Bibliothek setzen zu müssen?
Diese Lösung gilt auch, wenn Boost-Erweiterungen verwendet werden, da die Klasse shared_library dlopen (unter Linux) zum Laden der Bibliothek verwendet. –