Es ist üblich, dass man eine Datenstruktur (ein Record in Delphi) definiert,
die sowohl der
DLL als auch dem Aufrufer (Lahey Fortran) bekannt ist.
Jede
DLL-Funktion bekommt als 1. Parameter diese Datenstruktur übergeben.
Der Aufrufer ist dafür verantwortlich, für die Datenstruktur den Speicher zu reservieren
und der Aufrufer gibt den Speicher auch wieder frei.
Hier ist ein fiktives Beispiel, wie so etwas aussehen kann:
Delphi-Quellcode:
TContext = record
xpos_min:double;
ypos_min:double;
interations : integer;
...
end;
procedure InitializeContext(var context:TContext); // sichere Anfangswerte setzen
function CalculateArea(var context:TContext; mode:integer):double;
...
Diese Technik ist quasi die Vorstufe zu Objektorientiertem Programmieren.