如果卸载加载它的DLL,是否会删除DLL?

mj2*_*008 8 windows dll winapi

采用标准的Windows应用程序.它使用LoadLibrary加载DLL来调用其中的函数(我们称之为DLL_A).该函数加载另一个DLL(我们称之为DLL_B).应用程序现在使用FreeLibrary卸载DLL_A DLL,因为它不再需要它.

问题是: DLL_B是否仍在内存中并加载?

这是我可以依赖的东西,还是没有文件记录?

Mic*_*urr 11

号码DLL_B不会被卸下.进行的LoadLibrary()调用DLL_A将增加负载计数DLL_B.由于没有相应的FreeLibrary()调用DLL_B,refcount不会变为零.

从LoadLibrary()文档:

系统在所有已加载的模块上维护每个进程的引用计数.调用LoadLibrary会增加引用计数.调用FreeLibrary或FreeLibraryAndExitThread函数会减少引用计数.系统在其引用计数达到零或进程终止时(无论引用计数如何)卸载模块.