Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
Delphi 7 Enterprise
|
Re: C: DLL und Callback Aufruf mit Delphi Parameterübergabe
20. Dez 2009, 10:17
Der Rückgabewert landet hier im Register EAX. Das hängt aber vom Typ des Rückgabeparameters ab. Ist aber bei cdecl und stdcall identisch (und für den Rückgabewert auch bei allen anderen gängigen Aufrufkonventionen). Der einzige Unterschied zwischen den beiden Aufrufkonventionen besteht darin, wer den Stack aufräumt. bei stdcall macht es die Funktion, bei cdecl der die Funktion aufrufende Code. Und entweder räumst du gar nicht oder gleich zweimal den Stack auf (wobei Aufräumen nur bedeutet, den Stackpointer einfach je nach Parameter-zahl und -typen zu verschieben). Danach sind alle Zugriffe auf lokale Variablen falsch. und wenn es da noch nicht knallt, dann spätestens, wenn du das nächste Mal eine Funktion verlässt, weil er die Rücksprungaddresse nicht mehr hat.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
|