无法从bpl调用导出功能
|
我使用的是Delphi XE,我具有以下设置:
Mydll.dll和Package1.bpl(运行时程序包)都包含Unit3.pas
unit Unit3;
interface
implementation
uses Dialogs;
procedure TestProc(const S: string); stdcall;
begin
MessageDlg(S, mtInformation, [mbOK], 0);
end;
exports TestProc;
end.
情况1:
procedure TestProc(const S: string); stdcall; external \'mydll.dll\';
procedure TForm1.Button3Click(Sender: TObject);
begin
TestProc(\'Button3\');
end;
情况2:
procedure TestProc(const S: string); stdcall; external \'Package1.bpl\';
procedure TForm1.Button3Click(Sender: TObject);
begin
TestProc(\'Button3\');
end;
情况3:
procedure TForm1.Button3Click(Sender: TObject);
var H: THandle;
P: procedure(const S: string); stdcall;
begin
H := LoadPackage(\'Package1.bpl\');
try
@P := GetProcAddress(H, PChar(\'TestProc\'));
if Assigned(P) then
P(\'Button3\');
finally
UnloadPackage(H);
end;
end;
情况1和情况3通过了,但情况2会引发访问冲突。
我的问题如下
1.不支持案例2?
2.除案例3之外,是否还有类似Case1的方法从Package1.bpl调用TestProc?
没有找到相关结果
已邀请:
2 个回复
熊融炭臀陛
函数才能将程序包加载到内存中。 试试这个代码
破弯
声明),而仅使用包含函数的单位。