动态调用包中的函数 ( 积分: 100 )

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

mvb

Unregistered / Unconfirmed
GUEST, unregistred user!
如何动态调用bpl中的函数?我使用LoadPackage载入包,用GetProcAddress取函数地址,传递函数名为参数,但函数地址却为nil.该函数的声明在包所包含的一个单元的interface部分.
 
如何动态调用bpl中的函数?我使用LoadPackage载入包,用GetProcAddress取函数地址,传递函数名为参数,但函数地址却为nil.该函数的声明在包所包含的一个单元的interface部分.
 
应该不会,bpl倒出函数跟dll查不多,你在包含函数的单元里面exports函数没有?
 
type
Ttest = procedure;
procedure TForm1.Button1Click(Sender: TObject);
var
HPackage: THandle;
test: Ttest;
begin
HPackage := LoadPackage('pkgtest.bpl');
if (HPackage <> 0) then
try
@test := GetProcAddress(HPackage, 'test');
if (@test <> nil) then
test
else
RaiseLastWin32Error;
finally
UnLoadPackage(HPackage);
end
else
RaiseLastWin32Error;
end;
 
to dfw001: 我只是将函数声明放在包中某一单元的interface部分。如何使用Exports?
to gyh75:调用函数的语句应该没问题,关键是在包中如何写?
 
多人接受答案了。
 
后退
顶部