library interface



  • HAllo an alle.
    Wenn man unter Windows eine DLL baut, dann kann man den zu exportierenden Interface einmal in der def Datei definieren oder im Code per

    #ifdef FOO_EXPORTS
    #define FOO_API __declspec(dllexport)
    #else
    #define FOO_API __declspec(dllimport)
    #endif
    

    indem man vor die Funktion, die man in die DLL exportieren möchte FOO_API schreibt.

    Letzteres funktioniert unter Linux/Unix/Sun nicht, da Windows spezifisch.

    Weiß jemand, wie man auf diese oder ähnliche Art SO interfaces definieren kann?
    Evtl. könnte man irgendetwas (eine Art def Datei) dem Linker übergeben. Ich habe aber leider nichts diesbezüglich gefunden.



  • #define EXPORT __attribute__ ((visibility("default")))
    #define HIDE __attribute__ ((visibility("hidden")))
    

    hilft dir vielleicht weiter. Aber das wird erst von neueren GCCs (ab 4 glaube ich) unterstützt.

    Normalerweise wird bei einer SO einfach alles exportiert.



  • Danke für die Antwort.
    Das hilft schon weiter. Ist aber etwas umständlich, da ich die Anweisung dann vor jeder Funktion schreiben muss.



  • öhm das FOO_API musst du, wenn du ne win-dll erstellen möchtest, auch vor jede funktion schreiben, die exportiert werden soll.


Anmelden zum Antworten