使用LoadLibrary加载DLL

AMC*_*der 3 c++ dll loadlibrary dynamic-loading visual-c++

如果我加载DLL LoadLibrary,该DLL是否保证保持加载?如果没有,我该如何防止重新加载.

实际情况:我有一个调度程序,根据一些消息,需要加载几个dll中的一个并从中执行一些功能.我无法在编译时链接它们,所以我使用LoadLibrary.因为可能会有很多电话,所以我不想LoadLibrary每次都打电话,因为事实证明它是一个瓶颈.所以我想每个DLL只调用一次,每个dll只调用一次GetProcAddress函数,然后将它缓存到某个地方.但它安全吗?我保证在任何后续通话中调用该功能都可以吗?如果没有,我怎么能有这个保证?

Blu*_*rer 8

LoadLibrary增加了可执行文件的引用计数,FreeLibrary减少了它.

当引用计数达到0时,将卸载可执行文件.所以你通常不必担心它.只要没有人在你的过程中调用FreeLibrary,Dll就会留在那里.