【问题标题】:Forcing static loading of dll from given directory强制从给定目录静态加载 dll
【发布时间】:2010-12-10 13:41:43
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: windows dll loadlibrary


    【解决方案1】:

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

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

    【讨论】:

    • LoadLibraryEx 看起来很有前途。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2013-06-29
    • 1970-01-01
    • 2016-12-28
    • 2012-10-24
    • 2020-09-13
    • 2012-10-02
    相关资源
    最近更新 更多