調用出口功能我用Delphi XE,我已經以下設置:無法從BPL
兩個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.除Case 3之外,是否還有類似於Case1的從Package1.bpl中調用TestProc?
感謝您的解決方案。如果第二次點擊按鈕,第一種解決方案會引發訪問衝突,但無論點擊多少次,第二種解決方案都能正常工作。 – lmengyew 2011-05-26 03:26:35
@lmengyew我刪除了第一個解決方案(只保留第二個)。 「LoadPackage」行中引發了Access Violation異常,因爲該包已經第二次加載了。 – RRUZ 2011-05-26 03:49:37