2011-06-30 21 views
1

にドット表記法とC#の名前空間を使用し、私は、名前空間A :: B :: Cを用いC++ COM相互運用:C++

とC++ヘッダに使用してみましたA.B.Cとして定義されるC#の名前空間を持っています。

エラーC2653が発生します。Aはクラスまたは名前空間ではありません。

アンマネージプロジェクトは、この名前空間を持つ管理対象プロジェクトを参照しています。これをどうやって回避するのですか? TIA。

答えて

2

COM相互運用機能は、あなたがそれを行うことはできません。 COM相互運用機能を使用すると、.NETオブジェクトへのC++ COMインターフェイスポインタを取得できます。 CoCreateInstance

C#名前空間と型を直接(COMインターフェイスポインタではなく)参照する場合は、C++/CLI(Visual C++の場合は/clrオプション)が必要です。

+0

ありがとう。私は、ドットのない単純な名前空間で物事を単純化し、代わりにその好きに思えます。 –

2

管理されていないコードから管理コードを呼び出すのはちょっと面倒です。あなたは、管理された関数への関数ポインタを取得するには、面倒な作業が必要です。それを行う方法については、この例を参照してください:

http://www.codeproject.com/KB/mcpp/unmanaged_to_managed.aspx

2

COMはC#名前空間をサポートしていないため、必要な作業を行う方法がありません。ベン・ボイトが述べたように、あなたがC#の名前空間を保持したい場合は申し訳ありません:(。

、あなたはC++/CLIを使用することができます。

関連する問題