我已将dll文件嵌入到我的应用程序中。我需要在启动时将其提取到应用程序的文件夹中,并在关闭应用程序时将其删除。我应该使用什么代码?
答案 0 :(得分:1)
从资源中提取文件,如下所示:
var
Stream: TResourceStream;
....
Stream := TResourceStream.Create(HInstance, ResourceName, RT_RCDATA);
try
Stream.SaveToFile(DllFileName);
finally
Stream.Free;
end;
像这样加载DLL:
var
lib: HMODULE;
....
lib := LoadLibrary(DllFileName);
Win32Check(lib<>0);
调用GetProcAddress
并使用DLL执行任何操作。
完成后,卸载DLL并删除文件:
FreeLibrary(lib);
DeleteFile(DllFileName);
请注意,这确实意味着您必须使用显式运行时链接(LoadLibrary
和GetProcAddress
)而不是隐式加载时间链接(external
)。如果你只有一个可执行文件,那就没办法了。这是因为在操作系统加载程序解决所有加载时间依赖关系之后,必须运行提取DLL的代码。