C ++ COM-взаимодействие: использование пространства имен C # с точечной нотацией в c ++ - PullRequest
1 голос
/ 30 июня 2011

У меня есть пространство имен C #, определенное как A.B.C, которое я пытался использовать в заголовке C ++ с

с использованием пространства имен A :: B :: C;

и я получаю ошибку C2653: A не является классом или пространством имен.

Неуправляемый проект ссылается на управляемый проект с этим пространством имен. Как мне обойти это? ТИА.

Ответы [ 3 ]

2 голосов
/ 01 июля 2011

COM Interop не позволяет вам сделать это. COM-взаимодействие позволяет вам получить указатель COM-интерфейса C ++ на объект .NET, используя, например, CoCreateInstance.

Если вы хотите обратиться к пространствам имен и типам C # напрямую (не через указатель интерфейса COM), вам нужен C ++ / CLI (опция /clr для Visual C ++).

2 голосов
/ 01 июля 2011

COM не поддерживает пространства имен C #, поэтому нет способа делать то, что вы хотите. Извините: (.

Как упоминал Бен Войт, вы можете использовать C ++ / CLI, если хотите сохранить пространства имен C #.

2 голосов
/ 01 июля 2011

Вызов управляемого кода из неуправляемого кода довольно неприятен.Вы должны сделать хитрые вещи, чтобы получить указатель на управляемую функцию.Посмотрите этот пример, чтобы узнать, как это сделать:

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

...