So, ich bin da mal wieder dran...
Ich habe jetzt einen struct in der
dll erstellt und den als Parameter der function _Multi übergeben. Der Aufruf aus dem Builder klappt, beim Aufruf aus Delphi klemmt es.
Delphi-Quellcode:
TParList =
record
Par1 : double;
Par2 : double;
TempLow : double;
TempHi : double;
PE : bool;
end;
sollte identisch sein mit
Code:
typedef struct ParList
{
double Par1;
double Par2;
double TempLow;
double TempHi;
bool
PE;
} TParList;
Und
function _Multi(var Values : TParList) : double; external '2008.dll';
mit
Code:
extern "C" __declspec(dllimport) double Multi(TParList *Values);
In der function selbst wird nur ein Eingabewert als Ergebnis durchgereicht.
Der Aufruf im Delphi-Programm liefert aber Müll zurück. Ich habe die TParList in Delphi lokal definiert und übergebe sie dann als var-Parameter, während ich sie in C++ mit new erzeuge. Kann das ein Problem sein? Ich dachte, beim record wird der Speicher automatisch zugewiesen.
Grüße, Messie