2016-09-15 98 views
0

我在這裏得到了一個類似的問題(和答覆):Can I use two incompatible versions of the same DLL in the same process? 但我不能修改該用戶完成的Qt5Gui.dll文件。C++加載Qt5GUI.dll的兩個版本

我的問題來自使用Maya軟件,該軟件在5.6版本中使用幷包含該庫,我需要創建一個使用5.7版本的Qt5Gui(它需要第三方庫)的新插件DLL,並且當我嘗試加載5.7確定5.6已經加載,所以正在執行

mModule = LoadLibraryEx(absDllPath, NULL, LOAD_WITH_ALTERED_SEARCH_PATH); 

返回錯誤127:找不到指定的程序。

奇怪的是,Qt5Core和其他人加載好了。

非常感謝您提供任何建議。

+1

不要以爲這完全可以解決。 –

回答

3

我會通過將Maya的任務委託給子進程來解決這個問題,即插件dll將通過RPC,pipesshared memory或它們的組合與該子進程創建並交互。這使得Qt v5.7 dll可以直接在插件DLL中訪問,而Qt v5.6只需要Maya才能正常工作。

編輯:當你進一步指出,只有依賴一個dll s需要Qt V5.7分裂可能會有所不同:如果dll到您的插件比Maya提供更少的數據/服務,那麼它可能是更合適創建一個子進程來承載該dll而不是Maya

+0

這個想法或多或少就像我的意思是我的DLL是像其他dll和例程的加載程序,問題是其中一個需要DLL需要Qt 5.7,所以我不能正確加載它,或者你的意思是一個單獨的.exe(而不是一個.dll)共享內存? –

+0

是的,我的意思是一個單獨的.exe,如果該術語更清晰地給你 – Serge

+0

@FrankEscobar請參閱編輯,請 – Serge