如果我使用LoadLibrary加载DLL,该DLL是否保证保持加载状态?如果没有,我该如何防止重新加载.
实际情况:我有一个调度程序,根据一些消息,需要加载几个dll中的一个并从中执行一些功能.我无法在编译时链接它们,所以我使用LoadLibrary.因为可能会有很多调用,所以我不希望每次都调用LoadLibrary,因为事实证明它是一个瓶颈.所以我想每个DLL只调用一次,调用GetProcAddress每个dll只能获取一次该函数,并将其缓存到某个地方.但它安全吗?我保证在任何后续通话中调用该功能都可以吗?如果没有,我怎么能有这个保证?
解决方法:
LoadLibrary增加了可执行文件的引用计数,FreeLibrary减少了它.
当引用计数达到0时,将卸载可执行文件.所以你通常不必担心它.只要没有人在你的过程中调用FreeLibrary,Dll就会留在那里.