• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> 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