我在这里读过一个类似的问题(和回复):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/