Ziemlich falsch. Erstens ist double = Double, zweitens ist die Delphi-Deklaration der Funktion falsch.
Delphi-Quellcode:
type
PDouble = ^Double;
type
TTest =
function(x: PDouble): Smallint;
stdcall;
var
vekX:
array of Double;
begin
dll := LoadLibrary('
test.dll');
@test := GetProcAddress(
dll, '
test');
SetLength(vekX, 1);
vekX[0] := 5;
r := test(@vekX[0]);
end;
So sollte es gehen.
Willst du nicht ein array von Double-Werten handhaben, sondern nur genau einen Double-Wert, dann besser mit var arbeiten.
Delphi-Quellcode:
type
TTest =
function(
var x: Double): Smallint;
stdcall;
var
vekX: Double;
begin
dll := LoadLibrary('
test.dll');
@test := GetProcAddress(
dll, '
test');
vekX := 5;
r := test(vekX);
end;
Auf C-Seite pruef mal nach ob EXPORT wirklich zu stdcall aufgeloest wird. Das sollte nicht nur in den Projektoptionen gesetzt sein.