c++ char * 转换c# 一般直接string 或者Marshal.StringToHGlobalAnsi(“string”)为IntPtr 即可。
但是如果string包含中文,c++收到中文是乱码。
解决办法:把string转为byte[] 再放到内存指针即可。
byte[] encodedBytes=Encoding.UTF8.GetBytes("string");
IntPtr wordPtr = Marshal.AllocHGlobal(encodedBytes.Length);
Marshal.Copy(encodedBytes, 0, wordPtr, encodedBytes.Length);
最后将wordPtr传给c++即可。