私たちは、ネイティブのWin32 C++コードと、C++コードから呼び出すC#アセンブリのセットを持っています。私はoptiosを次のように要約します:C++のC#オプションを呼び出す
COMを使用してください。 C#コードは、追加の属性(GUID、COMVisible)で装飾する必要があります。 C#アセンブリはregasmに登録する必要があり、COM経由でネイティブC++コードで使用できるようになります。
C++/CLI(以前は管理されていたC++)ラッパークラスを使用します。 C++クラスをネイティブC++プロジェクトに追加することができます。そのクラスは/ clrでコンパイルされます。ネイティブのC++コードは、C++/CLIクラスを呼び出して、.NETコードを呼び出します。 COMは関与していません。 CLRは、C++/CLI拡張で処理されたマーシャリングで必要に応じて魔法によって開始されます。
ネイティブのC++コードでCLRのインスタンスをホストします。
私はラッパークラスの必要性を失う以外に、オプション2よりも利点がわかりませんので、オプション3をディスカウントします。ですから、オプション1とオプション2の長所と短所は何ですか?
ありがとうございます。