在卸载dynamic package并调用UnloadPackage
函数时是否执行了一部分代码?
var
MyPackageHandle : THandle;
begin
MyPackageHandle := LoadPackage('.\MyPackage.bpl');
if(MyPackageHandle <> 0) then
UnloadPackage(MyPackageHandle);
end;
在这种情况下,我需要在 MyPackage.bpl 中执行一些代码,
答案 0 :(得分:0)
一般规则是,在将程序包卸载到单元的finalization
部分时,应放置需要调用的代码。我从您的其他软件包中知道您正在尝试卸载dll。但是要注意的是,永远不要从initialization
或finalization
加载/卸载dll。
因此,您需要做的是在程序包中有一个函数,您可以从主应用程序中调用该函数来执行清理工作。
type
TCleanup = procedure;
var
MyPackageHandle : THandle;
CleanupProc: TCleanup;
begin
MyPackageHandle := LoadPackage('.\MyPackage.bpl');
if(MyPackageHandle <> 0) then
begin
@CleanupProc := GetProcAddress(MyPackageHandle, 'Cleanup' );
if @CleanupProc <> nil then
CleanupProc;
UnloadPackage(MyPackageHandle);
end;
end;