Delphi做的动态链接库,delphi调用。
静态方式调用没有问题,完全正确。
改为动态方式,出AV问题或privileged instruction at 0x...dll部分
function mymax(i,j: integer): integer;
begin
if i>=j then Result:=i <====如果这里改成Result:=2,就没问题
else Result:=j;
showmessage('OK');
end;调用
type TmyMax = function(j,j: integer): integer;procedure TForm1.Button1Click(Sender: TObject)
var
i,j,k: integer;
mhnd: THandle;
iMax: TmyMax;
begin
mhnd:=LoadLibrary('mydll.dll');
if mhnd>0 then
@iMax:=GetProcAddress(mhnd,'mymax');
i:=10;
j:=4;
if not (@iMax=nil) then k:=iMax(i,j);
<===这里k一般等于4487576这样的一个数,而不是10
FreeLibrary(mhnd);
end;
end;
静态方式调用没有问题,完全正确。
改为动态方式,出AV问题或privileged instruction at 0x...dll部分
function mymax(i,j: integer): integer;
begin
if i>=j then Result:=i <====如果这里改成Result:=2,就没问题
else Result:=j;
showmessage('OK');
end;调用
type TmyMax = function(j,j: integer): integer;procedure TForm1.Button1Click(Sender: TObject)
var
i,j,k: integer;
mhnd: THandle;
iMax: TmyMax;
begin
mhnd:=LoadLibrary('mydll.dll');
if mhnd>0 then
@iMax:=GetProcAddress(mhnd,'mymax');
i:=10;
j:=4;
if not (@iMax=nil) then k:=iMax(i,j);
<===这里k一般等于4487576这样的一个数,而不是10
FreeLibrary(mhnd);
end;
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货