Неуправляемый класс C ++ в C # - PullRequest
3 голосов
/ 06 декабря 2010

Могу ли я создать экземпляр и "работать с" неуправляемым классом C ++ из кода C # (скажем, используя DllImport и т. П.)?

Ответы [ 2 ]

6 голосов
/ 06 декабря 2010

В Windows вы можете использовать COM-взаимодействие для работы с C ++.Это не будет работать в Linux / Mac OS X, однако.

Другой альтернативой является предоставление оболочки C вокруг класса C ++ (extern "C" в C ++).Это необходимо, потому что DllImport ожидает C ABI.

Edit: и третий вариант - C ++ / CLI , то есть компилирует ваш код C ++ для .Net.Это также решение только для Windows.

0 голосов
/ 22 марта 2011

Вы также можете использовать SWIG. Работает с Mono на Linux и Mac.

Он генерирует набор функций C, которые предоставляют класс C ++, и генерирует класс C #, который вызывает их с помощью DllImport.

Он позволяет наследовать классы C ++ в C #, а с помощью функции Director C ++ может вызывать виртуальные методы, переопределенные в C #.

...