怎么调用包里面的函数? ( 积分: 5 )

  • 主题发起人 主题发起人 mill666
  • 开始时间 开始时间
M

mill666

Unregistered / Unconfirmed
GUEST, unregistred user!
我在delphi里面新建一个package1,然后编译安装后生成包package1.bpl;这个包里面有一个单元pubfunc.pas,
里面有一个过程dispmsg,如下:

unit pubfunc;

interface
uses dialogs,unit1;
procedure dispmsg;


implementation
procedure dispmsg;
begin


showmessage('****');
end;



end.

然后我新建一个application,在form1上放置一个按钮button1,button1的onclick事件如下:

type
TProc = procedure;

var
pk: HModule;
pp:TProc;

begin
pk:=LoadPackage('Package1.bpl');
@pp:=GetProcAddress( pk, 'dispmsg' );

if @pp<>nil then
pp
else
showmessage('program is nil');

UnloadPackage(pk);
end;

最后编译成一个project1.exe,执行,发现返回的pp是个nil,也就是执行了 showmessage('program is nil'),而不是执行了
包里面的dispmsg?
请问这是为什么??为什么它找不到过程dispmsg??
 
我在delphi里面新建一个package1,然后编译安装后生成包package1.bpl;这个包里面有一个单元pubfunc.pas,
里面有一个过程dispmsg,如下:

unit pubfunc;

interface
uses dialogs,unit1;
procedure dispmsg;


implementation
procedure dispmsg;
begin


showmessage('****');
end;



end.

然后我新建一个application,在form1上放置一个按钮button1,button1的onclick事件如下:

type
TProc = procedure;

var
pk: HModule;
pp:TProc;

begin
pk:=LoadPackage('Package1.bpl');
@pp:=GetProcAddress( pk, 'dispmsg' );

if @pp<>nil then
pp
else
showmessage('program is nil');

UnloadPackage(pk);
end;

最后编译成一个project1.exe,执行,发现返回的pp是个nil,也就是执行了 showmessage('program is nil'),而不是执行了
包里面的dispmsg?
请问这是为什么??为什么它找不到过程dispmsg??
 
帮顶

--------签名档---------------------------

惊爆开源站

http://www.source520.com

80G源码电子书免费免注册下载,大量精辟技术文档库随时更新
 
好,帮顶



--------签名档---------------------------

比肩国内顶尖源码下载站点 -> 源码我爱你

http://www.source520.com
http://www.source520.net

80G源码电子书免费免注册下载,大量精辟技术文档库随时更新
******************************************************************
附:为了站点持续发展,现有本站近年来收藏的大量大型商业源码低价出售,
详情请进入以下链接查看:
http://www.source520.com/building_delphi.htm

浏览商业代码请从如下URL进入查看实物:
1.商业源码库1: ftp://source520see3:browse@61.152.199.245/
2.商业源码库2: ftp://source520see2:browse@61.152.199.245/
 

Similar threads

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