Framework / Hilfe für portable dll/so
-
Hi, folgende frage:
Ich hab in den Quellen von SFML ( http://sfml.sourceforge.net/ ) folgendes gefunden was sehr Interessant aussieht://////////////////////////////////////////////////////////// // Define portable import / export macros //////////////////////////////////////////////////////////// #if defined(SFML_SYSTEM_WINDOWS) #ifdef SFML_DYNAMIC // Windows platforms #ifdef SFML_EXPORTS // From DLL side, we must export #define SFML_API __declspec(dllexport) #else // From client application side, we must import #define SFML_API __declspec(dllimport) #endif // For Visual C++ compilers, we also need to turn off this annoying C4251 warning. // You can read lots ot different things about it, but the point is the code will // just work fine, and so the simplest way to get rid of this warning is to disable it #ifdef _MSC_VER #pragma warning(disable : 4251) #endif #else // No specific directive needed for static build #define SFML_API #endif #else // Other platforms don't need to define anything #define SFML_API #endifKlasse Beispielsweise werden dann folgender maßen definiert:
class SFML_API Randomizer { ... }Nun suche ich schon länger was kleines schlankes um meine eigenen Bibliotheken auf mehreren Plattformen dynamisch linken zu können, ohne sonderlich viel Rücksicht auf die OS-Spezifischen Funktionen achten zu müssen.
Nun zur eigentlichen Frage, ist (kann) es wirklich so simpel sein oder gibts daran auch einen Haken? Wenn ja, gibt es was empfehlenswertes was mir in der Hinsicht das Leben erleichtert?
Schonmal Danke!

-
Du suchst man: libtool: http://www.gnu.org/software/libtool/
-
Nunja, libtool schaut ja ganz gut aus aber die GPL lässt es wieder ausscheiden.
-
wxWidgets bietet eine Klasse wxDynamicLibrary an. Ich hab sie ausprobiert, und sie lädt sowohl .so als auch .dll zur laufzeit, gibt funktionszeiger zurück etc. Vielleicht kannst du die kopieren oder dir abgucken wie dies machen. Ich denke, du musst für jedes OS eigenen Code schreiben. unter windows mit LoadLibrary, unter linux mit dlopen