在C#中,对返回char*指针的C函数进行P/Invoke调用的正确方式
在C#中,对返回char*指针的C函数进行P/Invoke调用的正确方式。
// C++ code
PST_API const char* pst_get_version()
{
return "Ver 3.1";
}
//CSharp P/Invoke定义
//注意, 这里不能使用string作为返回值,只能使用IntPtr, 否则会崩溃!
[DllImport(SDK_DLL)]
public static extern IntPtr pst_get_version();
//csharp 使用
public string getVersion()
{
var ptr = PSTAPI.pst_get_version();
var str = Marshal.PtrToStringUTF8(ptr); //转换成字符串, 根据实际的编码选择一个PtrToString*函数
return str;
}