- 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:
Und hier der Code der im Programm zum Laden des Plugins verwendet wird:
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
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
}
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)();
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