Hallo.
Ich möchte ein Programm schreiben, in das verschiedene Module eingebunden werden können. Diese Module sollen shared libs sein, die per dlopen() zur Laufzeit geladen werden.
Das klappt soweit auch ganz gut. Eines dieser Module greift aber seinerseit wieder auf eine shared lib zu, die muss aber nicht per dlopen() geladen werden. Das ganze compiliert auch problemlos, nur findet er die lib nicht
g++ -fPIC -c myLib.cpp
g++ -shared -o myLib.so myLib.o
g++ -Wall -o myProg myProg.cpp -ldl
Führe ich myProg aus, lädt er zwar die Funktionen meiner sharedlib (geladen mit dlopen()) und führt sie auch aus, findet aber die Funktionen der 2.shared lib nicht (./myProg: symbol lookup error: ./dir1/dir2/myLib.so: undefined symbol: funktion_der_zweiten_lib).
Müsste ich die 2.lib nicht auch noch irgendwo einbinden? Normalerweise würde das ja beim linken des Programmteils passieren, der sie benutzt. Da dieser Teil (also meine Lib) aber nur ne .so werden soll, wird da ja nix gelinkt, oder?
Kann mir jemand sagen wo mein Fehler liegt? Danke…
Nachtrag1: sowohl der code vom Hauptprogramm, als auch der Code meiner Lib und der der zweiten Lib liegen alle 3 in unterschiedlichen Verzeichnissen, ebenso die entsprechenden Compilierergbnisse. Kann das zu Problemem führen?
Nachtrag2: dlfcn.h ist doch c, und nicht c++ oder? Gibt es vielleicht auch eine entsprechende c+±Variante, oder wird das auch da einfach weiterbenutzt?
bye Ronny