Symbole in dynamischen Librarys: Schon [solved]
-
Abend,
Ich hab grad ein kleines (oder auch großes) Problem mit dynamischen Librarys.
Ich beschreib die Situation mal kurz:Ich hab 2 C-Dateien die zu Objektdateien kompiliert werden dann
zusammengelinkt werden zu einer dynamischen Library (ich hoffe das
wird soweit klar, wenn nicht bitte nachfragen)
Diese dynamische Library wird nun wiederum von einem Programm aus geladen,
dieses braucht zum Einstieg das Symbol "getCompPluginInfo"
(wie genau das im Programm abläuft weis ich auch nicht, ich denke jedoch es wird
über dlsym geladen).Doch nun erhalte ich eine Fehlermeldung folgender Art:
dlsym: /home/storm/.beryl/plugins/libweather.so: undefined symbol: getCompPluginInfoDie Funktion getCompPluginInfo wird jedoch in einer der C-Dateien definiert
CompPluginVTable *getCompPluginInfo(void) { return &weatherVTable; }
Und solange man nur diese eine zu einer dynamischen Library macht funktioniert
das ganze. Linkt man aber beide Objektdateien zu einer dynamischen Library so gibt es
den besagten Fehler. (Ich weis das kann man sich jetzt schlecht vorstellen)Nun zu meiner Vermutung: Durch das zusammenfügen der beiden Objektdateien geht
das Symbol verloren. Doch wie kann ich das verhindern?Ich danke schonmal jedem der sich überhaupt die Mühe gemacht hat das alles
durchzulesen.Achja kompilieren tu ich natürlich mit dem gcc, vll gibts ja auch hier
einen speziellen Linkerflag um symbole zu exportieren oder ähnliches.
-
Mal wieder typisch 2h versucht/gesucht ohne Erfolg
und kaum gepostet hat man die Lösung:gcc bla -u getCompPluginInfo
Ist die benötigte Funktion, nur fals jemand mal ein ähnliches Problem hat.