See the question and my original answer on StackOverflow

It depends on the "surface contact" between your C++ library and your .NET code (BTW, you'll need to expose it as a DLL whatever way you choose)

If you really have a fully object oriented library with classes, methods, properties, i.e: an object model, you can go for the C++/CLI, so the integration will be quite transparent. The drawback is you'll have to understand some of its subtleties (and I think you also have some constraints about how you'll embed the MSVC runtime).

If you can reduce the API to a finite set of methods, than you can just export some of these methods and use P/Invoke (DllImport attribute. See this tutorial here: Platform Invoke Tutorial). In this case, make sure the exposed parameters will be consumable by the .NET layer (don't use complex C/C++ types, pointers to pointers to pointers, ..., don't use C++ classes, ...), and try to ensure memory allocation will be done by the .NET side.

PS: as a side note, you should think about the 32-bit / 64-bit issue. Will you DLL be available in 64-bit? Will you distribute both version? .NET is capable of both.