【问题标题】:How to load side by side same name DLLs (Visual Studio)如何并排加载同名 DLL (Visual Studio)
【发布时间】:2014-05-16 14:32:12
【问题描述】:

我有一个关于 side-by-side assemblies 的问题。

情况如下:

我有一个可执行文件app.exe,它通过搜索plugins 目录来加载插件。 app.exe 依赖于某个 A.dll

我正在开发一个插件,它依赖于具有相同名称的 A.dll 的较旧的自定义版本。将这个旧的定制版本更新到新版本是不可能的,所以我想我可能能够同时加载两个 A.dll 文件。

目录结构如下:

\bin
    app.exe
    A.dll (newer version)
    \plugins
        myplugin.dll

A.dll 的两个版本本身都依赖于大量其他 DLL,这些 DLL 可能存在类似的版本问题。 (我还应该提到我正在使用一个 64 位应用程序,如果这会有所不同的话。)

如何在 Visual Studio 中进行设置,以便我可以同时加载两个 A.dll 库,以便 myplugin.dll 使用旧版本,而 app.exe 使用新版本?

【问题讨论】:

    标签: c++ visual-studio-2012 dll sxs


    【解决方案1】:

    由于这些是插件,您可以通过调用 LoadLibrary 或类似方法来加载它们。在这种情况下,您可以简单地将完整路径传递给 DLL 以便加载它。

    【讨论】:

    • A.dll 有许多其他依赖关系这一事实重要吗?实际上,它更像是myplugin.dll 调用dep.dll,后者调用bin\A.dll。我希望dep.dll 改为调用bin\plugins\A.dll(但不能修改dep.cpp)。如果我在myplugin.cpp 中尝试LoadLibrary,我会收到“第一次机会异常”(未找到入口点)错误。在这种情况下我该怎么办?
    • 问题中没有任何细节
    猜你喜欢
    • 2012-03-26
    • 2014-05-22
    • 1970-01-01
    • 2013-02-03
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 2011-02-15
    相关资源
    最近更新 更多