1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

Problem mit Symbol Visibility bei dylib

Dieses Thema im Forum "OS X-Developer" wurde erstellt von HannesSAK, 11.09.08.

  1. HannesSAK

    HannesSAK Erdapfel

    Dabei seit:
    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
     
  2. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865

Diese Seite empfehlen