2016-09-15 5 views
0

私は同様の質問を投稿しました(そして返信):Can I use two incompatible versions of the same DLL in the same process? しかし、Qt5Gui.dllファイルはそのユーザーが行ったように変更できません。C++ Qt5GUI.dllの2つのバージョンを読み込んでください

私の問題は、5.6バージョンでそのライブラリを使用しているMayaソフトウェアを使用することから来ています。私は5.7バージョンのQt5Gui(サードパーティ製のライブラリで必要とされる)を使用する新しいプラグインDLLを作成する必要があります。 5.7既に5.6がロードされていることを確認してください

mModule = LoadLibraryEx(absDllPath, NULL, LOAD_WITH_ALTERED_SEARCH_PATH); 

エラー127:指定されたプロシージャが見つかりませんでした。

奇妙なことは、Qt5Coreなどが正常に読み込まれたことです。

ありがとうございます。

+1

これはまったく問題ないと思います。 –

答えて

3

私は、プラグインのDLLが作成およびRPCpipesまたはshared memoryまたはそれらの組み合わせによって、そのサブプロセスと対話するサブプロセスにMayaのタスクを委任することにより、このような問題を解決するだろう。これにより、プラグインDLLでQt v5.7 dllに直接アクセスできますが、Qt v5.6はMayaが正しく機能するためにのみ必要です。

編集:あなただけの依存関係の1 dll sがQt V5.7分割が異なる可能性が必要であること、さらにコメントしたよう:そのdllMayaよりもあなたのプラグインに少ないデータ/サービスを提供する場合、それはより適切かもしれないがMayaの代わりにdllをホストするサブプロセスを作成します。

+0

アイデアは多かれ少なかれ、私のdllは他のdllやルーチンのローダーのようなものだということです。問題はdllが必要なのはQt 5.7が必要なため、正しくロードできないか、別の.exe代わりに.dll)を共有するメモリですか? –

+0

はい、私は別の.exeを意味する場合、その用語はあなたにもっと明確です – Serge

+0

@FrankEscobar編集を参照してください – Serge

関連する問題