C# 调用了 C++写的dll ,其中的一个接口是返回LPCSTR 类型等字符类的,而在C# 声明 string类型或StringBuilder ,这样声明后,如果调用出错。
那么就将C#声明类型改为IntPtr , 再用System.Runtime.InteropServices.Marshal.PtrToStringAnsi(IntPtr);进行转换为字符;
如下:
DllImport(@"abc.dll", EntryPoint = "abc")]
static extern IntPtr abc();
IntPtr ptr = abc();
string str = System.Runtime.InteropServices.Marshal.PtrToStringAnsi(ptr);