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: _stdcall

    nun 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_convention

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


Anmelden zum Antworten