明
明月松间
Unregistered / Unconfirmed
GUEST, unregistred user!
自己写了一个数学矩阵运算函数相关的dll,在dll初始是声明如下: type Vector = array of double
type Matrix2= array of array of double
然后写了一个简单的测试函数 ……写了些求矩阵转置,逆等相关函数,但未对外声明。 function test(inff:Matrix2)ouble
stdcall
begin result := inff[0,0]
end
建立了一个工程Project1 引入dll文件 function test(inff:Matrix2)ouble
stdcall
external 'dllexample.dll'
添加一个按钮,按纽事件如下: procedure Tfmtest.Button4Click(Sender: TObject)
var tin:Matrix2
outffouble
begin SetLength(tin,4,2)
tin[0,0]:=0.5;tin[0,1]:=1
tin[1,0]:=-1;tin[1,1]:=-1
tin[2,0]:=-1;tin[2,1]:=0.5
tin[3,1]:=0.5;tin[3,2]:=-1
outff:=test(tin)
Button4.Caption := FloatToStr(outff)
end
调用时出现"Invalid Pointer Operation"错误,但按钮的值已经改变为0.5。 设置断点,程序出错在“Button4.Caption := FloatToStr(outff);”这句(此时outff值已经是0.5)。 不知道为什么,上网找了很多,但是大致都是说在dll中引用了string之类会出现这样的错误,我的dll中没有涉及到任何字符方面的使用,全是数值计算,而且我一开始就将ShareMem单元放在第一个引用单元。 还请高手指点迷津
type Matrix2= array of array of double
然后写了一个简单的测试函数 ……写了些求矩阵转置,逆等相关函数,但未对外声明。 function test(inff:Matrix2)ouble
stdcall
begin result := inff[0,0]
end
建立了一个工程Project1 引入dll文件 function test(inff:Matrix2)ouble
stdcall
external 'dllexample.dll'
添加一个按钮,按纽事件如下: procedure Tfmtest.Button4Click(Sender: TObject)
var tin:Matrix2
outffouble
begin SetLength(tin,4,2)
tin[0,0]:=0.5;tin[0,1]:=1
tin[1,0]:=-1;tin[1,1]:=-1
tin[2,0]:=-1;tin[2,1]:=0.5
tin[3,1]:=0.5;tin[3,2]:=-1
outff:=test(tin)
Button4.Caption := FloatToStr(outff)
end
调用时出现"Invalid Pointer Operation"错误,但按钮的值已经改变为0.5。 设置断点,程序出错在“Button4.Caption := FloatToStr(outff);”这句(此时outff值已经是0.5)。 不知道为什么,上网找了很多,但是大致都是说在dll中引用了string之类会出现这样的错误,我的dll中没有涉及到任何字符方面的使用,全是数值计算,而且我一开始就将ShareMem单元放在第一个引用单元。 还请高手指点迷津