私はC++ MFCプロジェクトに、.Netサードパーティ(.dll)と呼ばれる基本的にラッパーである.Net DLL(B.dllという名前)を参照しようとしています。私はB.dll用のtlbファイルを作成し、MFCアプリケーション内でこれをインスタンス化して呼び出すことができました。MFCマネージコードリファレンス
現在のところ、B.tlb、B.dll、およびC.dllのすべての依存関係は、MFCアプリケーションのbin フォルダにある必要があります。私が欲しいのは、苦労している、これら3つのファイルをMFC実行フォルダのサブフォルダに入れることです。
私は、B.dll設定ファイルの "privatePath"をサブフォルダに設定しようとしましたが、理解したように、設定する必要があるB.dllの "privatepath"ではなく、MFCアプリケーション(明らかにhasn私の知る限りでは、.Netアプリケーションではないので)
何か助けていただければ幸いです。
から解決策を持っている、と多くのポイント決してありません。 CLRは、somename.exeと同じディレクトリにあるsomename.exe.configファイルを探します。したがって、 ''要素を追加すると、C.dllファイルを見つけるのに役立ちます。 B.dllは、Regasm.exeコマンドの/ codebaseオプションを使用してアセンブリを登録するか、mfcアプリケーションにマニフェストに ''要素を付ける必要があります。 COMの依存関係のためにユーザーのマシン上でGACを使用することは決して悪い考えではありません。 –
なぜこのシナリオはDLL地獄と見なされますか?あなたはもっとそれを説明できますか? .Net dllラッパーを作成せずにCOMコンポーネントとして登録することはできません。 – ali