にドット表記法とC#の名前空間を使用し、私は、名前空間A :: B :: Cを用いC++ COM相互運用:C++
とC++ヘッダに使用してみましたA.B.Cとして定義されるC#の名前空間を持っています。
エラーC2653が発生します。Aはクラスまたは名前空間ではありません。
アンマネージプロジェクトは、この名前空間を持つ管理対象プロジェクトを参照しています。これをどうやって回避するのですか? TIA。
にドット表記法とC#の名前空間を使用し、私は、名前空間A :: B :: Cを用いC++ COM相互運用:C++
とC++ヘッダに使用してみましたA.B.Cとして定義されるC#の名前空間を持っています。
エラーC2653が発生します。Aはクラスまたは名前空間ではありません。
アンマネージプロジェクトは、この名前空間を持つ管理対象プロジェクトを参照しています。これをどうやって回避するのですか? TIA。
COM相互運用機能は、あなたがそれを行うことはできません。 COM相互運用機能を使用すると、.NETオブジェクトへのC++ COMインターフェイスポインタを取得できます。 CoCreateInstance
。
C#名前空間と型を直接(COMインターフェイスポインタではなく)参照する場合は、C++/CLI(Visual C++の場合は/clr
オプション)が必要です。
管理されていないコードから管理コードを呼び出すのはちょっと面倒です。あなたは、管理された関数への関数ポインタを取得するには、面倒な作業が必要です。それを行う方法については、この例を参照してください:
http://www.codeproject.com/KB/mcpp/unmanaged_to_managed.aspx
COMはC#名前空間をサポートしていないため、必要な作業を行う方法がありません。ベン・ボイトが述べたように、あなたがC#の名前空間を保持したい場合は申し訳ありません:(。
、あなたはC++/CLIを使用することができます。
ありがとう。私は、ドットのない単純な名前空間で物事を単純化し、代わりにその好きに思えます。 –