【问题标题】:Problems with using Specific versions of DLLS使用特定版本的 DLLS 的问题
【发布时间】:2019-03-17 19:46:56
【问题描述】:

我在构建 WPF 托管的 Windows 应用程序时遇到问题。此应用程序使用 CEF Sharp - 一个托管库,它基本上是“Chromium Embedded Framework”的绑定,一个非托管库。这依赖于通过 DLL 的角度项目 - libEGL.dll 和 libGLESv2.dll。

我遇到的问题是我正在使用另一个本机库,该库具有其 DLL 版本。这些 dll 是相似的 - 但绝对不同。

我遇到的问题是确保这些依赖项中的每一个都使用自己的库版本。目前,铬和其他库从 .exe 所在的同一目录加载 gl dll。

解决此问题的最佳/最有效方法是什么?我已经阅读了一些资料 - 一些消息来源建议“WinSxS”应该可以工作 - 而其他人则建议它只适用于单独的应用程序 - 而不是使用不同版本的 DLL 的同一进程。

感谢您的帮助。

【问题讨论】:

    标签: wpf windows dll chromium cefsharp


    【解决方案1】:

    基本上作为路线图:

    1. 将所有 CEF 相关文件移动到单独的目录中。
    2. 从此目录加载 libcef.dll(最好查阅 cefsharp 文档)或在触摸 CefSharp 之前使用 LoadLibraryEx。
    3. 此时 CEF 应该从自己的目录加载任何内容,但这可能需要重新检查。
    4. 加载您的第二个库。确保它从自己的目录加载角度。

    根据结果,您将能够决定要做什么。例如,您可能需要修补第二个库来强制它使用正确的路径加载角度。

    添加:您可能想要使用 SetDllDirectory 或其他 LoadLibrary 的东西,但首先是将 CEF 二进制文件移动到其他目录 - 它旨在在这种情况下工作。

    【讨论】:

    猜你喜欢
    • 2018-05-15
    • 2020-01-09
    • 1970-01-01
    • 2016-06-18
    • 2019-03-22
    • 1970-01-01
    • 2019-10-20
    • 2023-02-02
    • 1970-01-01
    相关资源
    最近更新 更多