Hallo SirThornberry
Ich hab jetzt mal eine kleine
DLL geschrieben die im Grunde den gleichen Aufruf hat. Es funktioniert leider noch immer nicht, auch wenn ich einen Pointer auf das erste Element mache. cdecl oder stdcall machen auch keinen Unterschied. Kannst du dir bitte den Code noch einmal anschaun, ich glaub ich steh jetzt voll auf der Leitung. Danke
C++
Dll
Code:
extern "C" _declspec(dllexport) bool add(double *res, double * dat, int size);
bool add(double * res, double *dat, int size){
double * help;
int i;
int count =0;
for (i = 0; i < size; i++){
res[i] = dat[i] * 2;
if (res[i] == 0)
count ++;
}
if (count == 0)
return true;
else {
return false;
}
}
delphi Implementierung:
Delphi-Quellcode:
type
TDim =
Array of Double;
add:
function(
var outdat:PDouble;dat: TDim; size:Integer): boolean
stdcall {$IFDEF WIN32} cdecl {$ENDIF};
procedure TForm1.Button2Click(Sender: TObject);
var dat, res : TDim;
size,i : Integer;
result : Boolean;
pres : PDouble;
begin
size := 9;
SetLength(dat,size);
SetLength(res,size);
pres:=@res[0];
for i := 0
to size-1
do begin
dat[i] := 2;
end;
result := add(pres,dat,size);
if result = true
then begin
txtStatus.Text := '
add ok!';
t1.text := FloatToStr(res[0]);
end else begin
txtStatus.Text := '
add failed!';
end;
end;