动态链接库相关---为什么会出错?(100分)

  • 主题发起人 主题发起人 dongfz
  • 开始时间 开始时间
D

dongfz

Unregistered / Unconfirmed
GUEST, unregistred user!
在动态链接库中声明了一个函数,
function f(x:integer;y:Pointer):integer;
var
temp:integer;
begin
temp:=integer(y^);
integer(y^):=x;
result:=x+temp;
end;
调用过程如下:
type
TF=function(x:integer;y:Pointer):integer;//声明函数类型
。。。
var
f:=TF; //函数变量
。。。
begin
//准确载入了函数到变量f中
//下面是调用
procedure TForm1.Button6Click(Sender: TObject);
var
x,z:integer;
y:integer;
begin
x:=1;
y:=100;
z:=f(x,@y);
ShowMessage('Result is '+inttostr(z));
end;

结果老出现非法。各位大虾看看有什么问题,我有些糊涂了:)
 
动态库里面用sharemem单元了没?
 
function f(x:integer;y:Pointer):integer; stdcall; --加上stdcall
type
TF=function(x:integer;y:Pointer):integer; stdcall;--加上stdcall

var
f:= TF; //函数变量 这样的定义我没见过,如果是初始化变量值, 也不能初始类型值给他吧;
应该这样定义:
var
f: TF;
I: integer = 1;
 
谢谢楼上两位!不是这段代码的错!我已经找到问题了。
不过还是谢谢两位。一人50
 
多人接受答案了。
 
f:= TF; 那个是笔误!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
735
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部