在我们的应用程序中,我们动态加载一个dll文件,该文件同样具有到其他dll的静态绑定。
到目前为止,所有这些dll都在我们的应用程序文件夹中。从现在开始,我们希望将这些dll移动到目录结构中。应该在运行时决定应该从哪个文件夹加载dll。 (版本控制/动态更新......)
问题1 :强制动态加载库在给定文件夹中查找静态加载库的最佳方法是什么?
问题2 :如果旧版本的库留在那里,我们如何防止它从应用程序文件夹中加载静态库?
(顺便说一句,这是一个win32应用......)
答案 0 :(得分:3)
对于Q1,您应该关注SetDllDirectory
。它会影响所有后续DLL搜索,条件是应用程序文件夹中的DLL(例如旧的DLL)仍然优先。
然后立即回答问题2:如果您不想这样做,请不要使用隐式DLL加载。使用LoadLibraryEx
,并使用完整路径。这是防止Windows搜索的唯一方法。