在卸载动态包装调用UnloadPackage函数时,是否有一部分代码被执行?
var
MyPackageHandle : THandle;
begin
MyPackageHandle := LoadPackage('.\MyPackage.bpl');
if(MyPackageHandle <> 0) then
UnloadPackage(MyPackageHandle);
end;在本例中,当MyPackage.bpl卸载时,我需要在它内部执行一些代码
发布于 2019-06-27 15:47:26
一般规则是,在将包卸载到单元的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;https://stackoverflow.com/questions/56785458
复制相似问题