Du deklarierst im Programm und in der
DLL den Funktionstyp, z.B.:
Delphi-Quellcode:
type
TAddiere =Function(const a,b:Integer):Integer;
legst die Funktion in Deinem Programm an
Delphi-Quellcode:
Function Addiere(const a,b:Integer):Integer;
begin
Result := a + b;
end;
übergibst der
DLL den Callback
InitProc(@Addiere);
merkst Dir in der
DLL die Adresse der Funktion:
Delphi-Quellcode:
Procedure InitProc(f:TAddiere);
begin
FAddiere := f; // irgendwo deklariert als f:TAddiere;
end;
verwendest die funktion in der
DLL
Z :=Faddiere(x,y)
Wenn Du auf Methoden zugreifen willst lautet die Deklaration
TAddiere =Function(const a,b:Integer):Integer of object;
Wie immer Strings und andere dynamische Strukturen nur mit Sharemem ....