.NETアプリケーションに公開するC++ DLL(コードなし)があります。ネイティブC++ DLLを.NETにラップするDLLの依存関係を追跡する
(COM、P/Invoke、SWIGなど)のすべてのオプションを熟考した後、.NET Class Library(C++/CLI)を作成しています。現在のDLL(クラスライブラリ)には元のDLLとその依存関係も必要です。私の問題は、自動的にそのようなことを追跡することにあります。そのため、ラッパーを使用するアプリケーションは、(元のDLLが新しい依存関係を開発する場合は)他の(ネイティブ)DLLを追跡する必要がありません。
より具体的には(具体的に何かを議論するため)、私はを書きます。 cmr
は、PNL
,OpenCV
などに依存します。 MR
への参照を(C#)プロジェクトに追加しようとすると、Visual Studio(2005 SP1)でMR.DLL
がコピーされ、すべての依存関係が残された後、不明瞭なモジュールが返されました(FileNotFoundException
)。手動でcmr
,PNL
などをbin
ディレクトリにコピーして問題を修正しました。
私の質問はこれです.1つのDLLへの参照のみを追加する方法はありますか?すべてはちょうどちょうど動作します?
私は...無駄に、SO
EDITグーグルを通して精練してきた:mergebinは私が探しているものに最も近いと思われるが、それは唯一と.NETのDLLをマージすることができますが1つのネイティブDLL。残念ながら、ネイティブDLLをマージすることはできません。あなたは2つの特定の問題を持っているよう
+1これは良い方法です。ネイティブdll名は、マネージdllのマニフェストに埋め込まれています。 DLLはまだ飛んでいるものの、ビルドツール(少なくとも理論上)はネイティブの依存関係を把握できます。 Web配置シナリオでうまく機能します。 – tivadj