Short answer: you need to use managed data types (such as String).
Some details:
You need to use System.Runtime.InteropServices namespace.
You need to use the DllImport attribute
You can use either a string or a StringBuilder type, as far as I know.
Most examples show a String type used for a char*, but here's an example
from some of my code where I use StringBuilder:
[DllImport("c_language.dll", EntryPoint="my_C_function")]
public unsafe static extern RetvalFlag myImportedCFunction(double x, int
y, CalcFlag iflag, double* ptrD, StringBuilder sberr);
private StringBuilder sberr = new StringBuilder("empty string", 2*256);
You'll find a lot more info on this topic if you look under pinvoke or
P/Invoke or Platform Invoke.
Hope that helps!