可以在卸载主机 DLL 之前卸载通过导入库链接的 DLL 吗?

Can DLLs linked via import libs be unloaded before the host DLL is unloaded?

我有一个 Foo.dll,它通过 Bar 的导入库 (Bar.lib) 链接到 Bar.dll。 Foo.dll 也延迟加载 Bar.dll 所以它只在第一次调用时加载。现在,如果 Foo.dll 调用由 Bar.dll 导出的函数,那么 Bar.dll 被加载,Bar.dll 是否可以在 Foo.dll 从进程中卸载之前卸载?前提是app进程中没有其他DLL依赖Bar.dll.

是的,您必须指定 /DELAY:UNLOAD linker option and call the FUnloadDelayLoadedDLL 函数。

有关详细信息,请参阅 Unloading a delay-loaded DLL