0

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

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

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

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

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

4

1 回答 1

3

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

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

于 2010-12-10T14:39:35.430 回答