• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Wir haben den Frühjahrsputz beendet, Ihr auch? Welches Foto zu dem Thema hat Euch dann am Besten gefallen? Hier geht es lang zur Abstimmung --> Klick

Problem mit Symbol Visibility bei dylib

HannesSAK

Erdapfel
Registriert
11.09.08
Beiträge
1
Hey,

ich versuche momentan eine dylib zu generieren, die von einem anderen Programm als PlugIn geladen werden soll. Die dylib soll eigentlich nur eine Funktion ("RegisterPlugins()") sichtbar für den Client haben. Habe schon das halbe INet durchforstet aber irgendwie nichts passendes gefunden :(

Hier meine Funktion:

Code:
__attribute__((visibility("default"))) void RegisterPlugins()
{
     // my function body
}
Und hier der Code der im Programm zum Laden des Plugins verwendet wird:

Code:
        // load dylib into address space
        void* dylibHandle = dlopen( filename, RTLD_GLOBAL );
        if (dylibHandle == NULL) 
        {
            LogError("Failed to load the plugin library file (code=%d)", dlerror());
            return false;
        }
        
        // get the address to the RegisterPlugins function inside the plugin
        typedef void (*RegisterFunction)();
        RegisterFunction registerFunction = (RegisterFunction)dlsym( dylibHandle, "RegisterPlugins" );
        if (registerFunction == NULL)
        {
            LogError("Failed to find the RegisterPlugins function inside this plugin library (code=%d)", dlerror());
            dlclose( dylibHandle );
            return false;    
        }
    
        (registerFunction)();
Bis zum öffnen der Library verläuft alles wunderbar, bekomme keinerlei Compiler Fehler etc. Aber die zu ladende Funktion ist immer 0, er findet sie also innerhalb des Plugins nich. Habe schon einige Sachen ausprobiert, wie Compileroption: -fvisibility=default und auch die EXPORTED_SYMBOLS_FILE option, sowie #pragma ... für die Symbolsichtbarkeit.

Hat irgendjemand ne Idee an was das liegen kann?? Oder selbst schon erfahrung im erstellen von dylibs gesammelt??? Kann man sich iwie anzeigen lassen welche Symbole in der dylib visible sind oder so??

Bin über jeden noch so kleinen Tipp dankbar!! Vielen Dank schonmal im vorraus!! :-D

(Ach ja: Programmiersprache ist C++ und ich Verwende XCode 3.1 mit GCC-Version 4.0.1).

Gruß Hannes