Это зависит от "поверхностного контакта" между вашей библиотекой C ++ и вашим кодом .NET (кстати, вам нужно будет представить его как DLL любым способом, который вы выберете)
Если у вас действительно есть полностью объектно-ориентированная библиотека с классами, методами, свойствами, т.е. объектной моделью, вы можете выбрать C ++ / CLI , поэтому интеграция будет достаточно прозрачной. Недостатком является то, что вам придется понимать некоторые его тонкости (и я думаю, что у вас также есть некоторые ограничения относительно того, как вы будете встраивать среду выполнения MSVC).
Если вы можете сократить API до конечного набора методов, тогда вы можете просто экспортировать некоторые из этих методов и использовать P / Invoke (атрибут DllImport. См. Этот учебник здесь: Учебник по платформе ). В этом случае убедитесь, что представленные параметры будут использоваться уровнем .NET (не используйте сложные типы C / C ++, указатели на указатели на указатели, ..., не используйте классы C ++, ...), и попробуйте убедиться, что выделение памяти будет выполнено стороной .NET.
PS: в качестве примечания следует подумать о 32-битной / 64-битной проблеме. Будет ли DLL доступна в 64-битной версии? Будете ли вы распространять обе версии? .NET способен на оба.