强制从给定目录静态加载dll

时间:2010-12-10 13:41:43

标签: windows dll loadlibrary

在我们的应用程序中,我们动态加载一个dll文件,该文件同样具有到其他dll的静态绑定。

到目前为止,所有这些dll都在我们的应用程序文件夹中。从现在开始,我们希望将这些dll移动到目录结构中。应该在运行时决定应该从哪个文件夹加载dll。 (版本控制/动态更新......)

问题1 :强制动态加载库在给定文件夹中查找静态加载库的最佳方法是什么?

问题2 :如果旧版本的库留在那里,我们如何防止它从应用程序文件夹中加载静态库?

(顺便说一句,这是一个win32应用......)

1 个答案:

答案 0 :(得分:3)

对于Q1,您应该关注SetDllDirectory。它会影响所有后续DLL搜索,条件是应用程序文件夹中的DLL(例如旧的DLL)仍然优先。

然后立即回答问题2:如果您不想这样做,请不要使用隐式DLL加载。使用LoadLibraryEx,并使用完整路径。这是防止Windows搜索的唯一方法。

相关问题