dllを実行可能ファイルと同じディレクトリにコピーせずに登録不要のCOMオブジェクトを消費するにはどうすればよいですか?これは可能ですか?DLLを実行ファイルと同じディレクトリにコピーせずにCOMを登録しないでください
正確なシナリオのための完全な作業サンプルまたは詳細なステップバイステップガイドが必要です。
例えば、私は、次のコンポーネントがあります。
CppTestRunner.exe - VC++コンソールアプリケーション
CppTests.dll - VC++のMFC DLL
CsCOMServer.dll - C#COM見えるDLL
を私はしたくありません外部マニフェストの追加など、exeまたはそのディレクトリを変更します。
CppTests.dllはexeとは別のディレクトリにあります。
CsCOMServer.dllがCppTests.dllと同じディレクトリにある場合は問題ありません。
CppTestRunner.exeが正常に動作するCppTests.dllでLoadLibraryを呼び出します。
マニフェストを埋め込んだ後、Windows activation context apisを使用して、CppCOMServer.dllをexeディレクトリにコピーして、CppTests.dllが問題なくCsCOMServer.dllのインスタンスを作成できることを確認できましたが、やり直していますこの手順を回避します。私はCoCreateInstanceを呼び出すときにexeファイルのディレクトリに、私は次のエラーを取得していますCppTests.dllと同じディレクトリにCsCOMServer.dllと、そしてCsCOMServer.dllせずに現在
、:
エラー= 0x80070002がシステムを見つけることができません指定されたファイル。私はCppTestRunner.exeが中に見えるのパスを追跡するのSysinternalsのプロセスモニタを使用している
など
私は私がやろう事柄に応じて、時々CppTestRunner.exeがでCsCOMServer.dll.configを読み取ろうとすることに注意してくださいCppTests.dllと同じディレクトリですが、私がそこに入れようとしているにもかかわらず、私はエラーを越えることができませんでした。
また、私がしようとする他のことにもよるが、CppTestRunner.exeはCppTests.dllと同じディレクトリにあるCsCOMServer.dllを読み込もうとしますが、何らかの理由で同じエラーが発生します。
誰かがこの正確なシナリオで作業コードを知っていますか?
おそらく分かるように、これはユニット統合テストの一部です。
簡単な回避策として、私は現在、CppTestRunner.exeをCppTests.dllと同じディレクトリにコピーしてそこから実行していますが、この手順を避けたいと考えています。
ありがとうございます。
ありがとうございます。これは不可能だと言っていますか? –
これは不可能なので、あなたの回避策はまともなアプローチであるようです。 –