C++加载两个版本的Qt5GUI.dll

标签 c++ qt dll dllimport

我在这里读过一个类似的问题(和回复):Can I use two incompatible versions of the same DLL in the same process? 但是我不能像那个用户那样修改 Qt5Gui.dll 文件。

我的问题来自使用使用并包含 5.6 版本库的 Maya 软件,我需要创建一个使用 5.7 版本 Qt5Gui(第三方库需要)的新插件 dll,当我尝试加载 5.7 时一个确定 5.6 已经加载所以执行

    mModule = LoadLibraryEx(absDllPath, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);

返回错误 127:找不到指定的过程。

奇怪的是 Qt5Core 和其他的加载正常。

预先感谢您的任何提示。

最佳答案

我会通过将 Maya 的任务委派给插件 dll 将创建的子进程并通过 RPC管道 与该子进程交互来解决此类问题> 或 共享内存 或它们的组合。这允许在插件 dll 中直接访问 Qt v5.7 dll,而只有 Maya 正常运行才需要 Qt v5.6。

编辑:正如您进一步评论的那样,只有一个依赖项 dll 需要 Qt v5.7,拆分可能不同:如果dll 为您的插件提供的数据/服务比 Maya 少,那么创建一个子进程来托管该 dll 可能更合适玛雅

关于C++加载两个版本的Qt5GUI.dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39504928/

相关文章:

linux - 在现有 Qt Creator 实例中打开文件

c++ - QToolBar 子列表总是在增长。 Qt内存泄漏?

C++ DLL 浮点确定性

c++ - 需要有关 C++ 类引用的建议

c++ - 如何从 C++ 代码调用 PL/pgSQL 函数

c++ - 随机排列

c++ - Visual C++ 2010 速成版 : How to use with Qt?

c++ - 在一个进程中使用和不使用代理运行 VLC

java - 如何在 Delphi 中调试从 Java 调用的 DLL?

c# - 在 C# 中使用 webkit 库的问题