关于delphi中调用dll无法解决的问题
###############以下是addtest2.dll中的函数原型。//Arguments:doublea//doubleb//double*c//double*d...
###############以下是addtest2.dll中的函数原型。
// Arguments : double a
// double b
// double *c
// double *d
// double *e
// Return Type : void
//
void addtest2(double a, double b, double *c, double *d, double *e)
{
*c = a + b;
*d = a + 2.0 * b;
*e = a - b;
}
##########################################
a,b输入参数,c,d,e为计算结果。这是我调用到delphi中,c,d,e结果为“nil”运行后就会内存出错。
var
a,b:double;
c,d,e:PDouble;
implementation
{$R *.dfm}
function addtest2(a:double;b:double;c:PDouble;d:PDouble;e:PDouble):Boolean;stdcall;External'addtest2.dll' name 'addtest2';
procedure TForm1.Button1Click(Sender: TObject);
var
P,f,k:PDouble;
pp:Boolean;
begin
a:=2;
b:=3;
pp:=addtest2(a,b,c,d,e);
if pp=true then
begin
Label1.Caption:='调用成功';
end
else
begin
Label1.Caption:='调用失败';
end;
end; 展开
// Arguments : double a
// double b
// double *c
// double *d
// double *e
// Return Type : void
//
void addtest2(double a, double b, double *c, double *d, double *e)
{
*c = a + b;
*d = a + 2.0 * b;
*e = a - b;
}
##########################################
a,b输入参数,c,d,e为计算结果。这是我调用到delphi中,c,d,e结果为“nil”运行后就会内存出错。
var
a,b:double;
c,d,e:PDouble;
implementation
{$R *.dfm}
function addtest2(a:double;b:double;c:PDouble;d:PDouble;e:PDouble):Boolean;stdcall;External'addtest2.dll' name 'addtest2';
procedure TForm1.Button1Click(Sender: TObject);
var
P,f,k:PDouble;
pp:Boolean;
begin
a:=2;
b:=3;
pp:=addtest2(a,b,c,d,e);
if pp=true then
begin
Label1.Caption:='调用成功';
end
else
begin
Label1.Caption:='调用失败';
end;
end; 展开
展开全部
Delphi里面的c、d、e必须正确分配地址之后才可以去调用addtest2,否则会引起内存冲突。
不能使用NIL或者未初始化的参数c、d、e去调用addtest2
不能使用NIL或者未初始化的参数c、d、e去调用addtest2
追问
你好,函数原型是:void addtest2(double a, double b, double *c, double *d, double *e)
{
*c = a + b;
*d = a + 2.0 * b;
*e = a - b;
}
转换为delphi,需赋值参数只有a,b。c,d,e为out结果。烦请大神可以看看我程序代码那块有问题?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询