ネイティブのWin32C++コードと、C ++コードから呼び出したいC#アセンブリのセットがあります。私は私たちのオプティオスを次のように要約します:
COMを使用します。C#コードは、追加の属性(GUID、COMVisible)で装飾する必要があります。C#アセンブリはregasmに登録する必要があり、COMを介してネイティブC++コードで使用できるようになります。
C ++ / CLI(以前はマネージC ++)ラッパークラスを使用します。C++クラスをネイティブC++プロジェクトに追加できます。そのクラスは/clrでコンパイルされます。ネイティブC++コードはC++/ CLIクラスを呼び出し、C ++/CLIクラスは.Netコードを呼び出します。COMは関与しません。CLRは、C ++ / CLI拡張機能によって処理されるマーシャリングで、必要に応じて魔法によって開始されます。
ネイティブC++コードでCLRのインスタンスをホストします。
ラッパークラスの必要性がなくなることを除いて、オプション2に勝る利点が見当たらないため、オプション3を割引します。だから問題は、オプション1とオプション2の長所/短所は何ですか?
前もって感謝します。