Platform Invoke ([DllImport]) is used to call *any* function exported from a
DLL. All functions exported from a DLL are C functions (yes, you can put
__declspec(dllexport) on a C++ method, but it will be exported as a C
function hence you have to take into account C++ name mangling and the this
pointer).
If the function is available through a static library then you can only
access the function through managed C++. In this case the managed C++ code
simply calls the function - you don't need any other code.
The COM wrapper objects are only used when you want to call COM code from
..NET code, or if you want to use .NET code from unmanaged code.
Richard