According to Frank Boyne, there are three ways to do this, if you choose the third method (which is easier and better, I think), you may have some problems passing variables of char* (or other pointer types) from your C# or VB code to your C++ code (in this case the wrapper class).
Suppose that you have something like this in your C++ wrapper class:
static char* foo(char *name)
the problem is this: How can I pass the value of the parameter name and how can I use the value returned by the function.
To pass the value of parameter name, you can simply use:
(char*)Marshal.StringToBSTR("VALUE")
in your C# code.
And to get the returning value of the function, you can use this code:
string s =
new string(
CPP_Managed_DLL.Class1.foo(
(char*)Marshal.StringToBSTR("VALUE")
)
);