ネイティブDLLが.NET DLLを呼び出すことはできますか?DLLが.NET DLLを呼び出すことはできますか?
答えて
はありません、あなたはC++/CLIのラッパーを記述する必要があり、COMを使用しないマネージC++
を使用する必要があります。ラッパーのヘッダーファイルを含むネイティブコードは、/ clr(共通言語ランタイムサポート)を使用してコンパイルする必要があります。
好奇心のため、COM相互運用機能を使用しないのはなぜですか? regasm.exeとtlbexp.exeツールを調べてください。
私はCOMに精通していないので、私はそれを学ぶのを避けるためにすべてを行います:) –
COMはまた、グローバル登録による厄介なDLLの地獄の問題に苦しんでいます。登録無料のCOMを行うことは可能ですが、ドキュメントが混乱してバグがあります。http://stackoverflow.com/questions/617253/is-anyone-successfully-using-registration-free-com-with-net-components –
管理対象の世界と非管理対象の世界を連携させるには、何かが必要です。 COMを使用したくない場合は、C++/CLIでラッパークラスを作成できます。
ここには、あなたが起動できる記事があります:.NET to C++ Bridgeです。
ありがとうあなたは記事のためにあなた。それは役に立ちます。 –
または、マネージC++で記述されたラッパー。 –
正確に。私たちが行うことは、Managed C++での標準的なextern "C"エクスポートを持つ薄いラッパーを作成し、次にC#で実際のコードを記述することです。 – ConsultUtah