Я думаю, что P / Invoke действительно самый простой подход:
- Создание библиотеки DLL в неуправляемом C ++, содержащей все функции, необходимые для внедрения.
- В вашем коде C # объявите некоторые
static extern
методы и используйте атрибут DllImport
, чтобы указать их на вашу C ++ dll. Для получения дополнительной информации см. Ссылку, предоставленную arul в его ответ .
Обратите внимание, что P / Invoke не ограничивается "функциями Windows API" & mdash; Вы можете вызывать функции, предоставляемые любой собственной DLL.
Потенциальным недостатком P / Invoke является то, что вам придется предоставить сигнатуры для ваших функций C ++, возможно, указав некоторые менее очевидные функции сортировки. В этом случае вы можете подумать о создании COM-сервера вместо «простой» DLL и использовании COM-взаимодействия для вызова кода из C #.