importen von funktionen einer dll
-
ich hab mal ein paar fragen dazu.
eigentlich weiß ich wie man das macht, aber es scheint als gäbe es doch verschiedene arten und weisen dies zu tun.zum einen : __declspec( dllimport )
dann: _stdcallnun habe ich irgendwo eine info dazu gelesen, daß es sich auch unterscheidet wie man was angibt.
also __declspec wenn man an die funktion noch ein @x anhängt, um den speicher zu reservieren.
nun habe ich aber auch schon dieses gesehen ohne diese speicherreservierung.(kann man in der dll festlegen wie sie importiert werden muss?bzw. deren funktionen)
desweiteren dann diesen code...
#define FIXCALL _stdcall int (FIXCALL*pFunction)();wozu ist nach FIXCALL das * da?
bei__declspec( dllimport ) int fFunction();sieht das ja auch völlig anders und einleuchtender aus.
vielleicht gibts ja auch hier irgendwo lektüre die ich noch nicht gefunden habe.
es ist doch etwas verwirrend das ganze.ich habe auch schon diese kombination gesehen...(wobei dies eher eine .lib betraf...
#define XDECL extern "C" __declspec(dllimport) #define XCALL __stdcall XDECL void XCALL xFunction(const char * key);
-
_stdcall
_fastcall
_cdecl
...Das sind calling Conventions.
http://en.wikipedia.org/wiki/Calling_conventionSie exportieren keine Funktionen, bestimmen bei Funktionen (auch bei exportierten) aber z.B. wer fürs Stackaufräumen verantwortlich ist.
Simon
-
meinte ich ja, wie der funktionsaufruf stattfindet.