Dll-Export



  • Moin,

    ich versuche gerade, Funktionen einer DLL zu exportieren, was auch grundsätzlich funktioniert.

    Nur habe ich das Problem, daß die Funktionen beim Importieren aus der erzeugten DLL immer einen underscore vor dem eigentlichen Namen haben müssen.

    Beispiel:

    #ifdef __cplusplus
    extern "C" {
    #endif
    //exports
    void  __declspec(dllexport)  IchbineineFunktion();
    #ifdef __cplusplus
    }
    #endif
    

    Wenn ich mir die Funktion dann anschließend auslese steht folgendes in der DLL:

    _IchbineineFunktion

    Vielen Dank im Voraus.

    mfg

    Ronny



  • Und wo ist jetzt Deine Frage?

    Vermutlich willst Du als Antwort: Erzeuge eine DEF-Datei!



  • Weil du extern "c" verwendest fügt der Compiler,
    intern einen unterstrich vor jedem Symbol.
    Das ist "c" calling convention, es gibt auch andere
    z.B. __stdcall, __fastcall ...

    extern "C"
    void  __declspec(dllimport)  IchbineineFunktion(); 
    // der unterstrich ist nur intern
    


  • Argh, ich sollte vor dem Klicken des Absenden-Buttons erstmal meinen post lesen;)

    Also, das Problem ist, daß ich die Funktionen wie oben angegeben ohne diesen "_" deklariere, sie dann aber in der Dll wie beschrieben auftauchen.
    Genauso soll es eben nicht sein. Die Funktion soll denselben Namen beim Import haben, wie beim Export( eben IchbineineFunktion).

    Sorry für die etwas verwirrende Fragestellung oben.

    mfg

    Ronny


  • Mod

    Jochen hat Dir die Anwort schon gegeben: Du benötigst eine DEF Datei in der die Funktionen, die Du exportieren willst in der Export Sektion aufzählst.



  • Wenn du den unterstrich in der DLL nicht haben wilst, und die funktion
    nicht mit einem c Compiler aufrufen willst entfern in der declaration
    extern "c".

    //exports
    void  __declspec(dllexport)  IchbineineFunktion();
    

    und der unterstrich in der DLL verschwindet.


Log in to reply