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
-
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.