wsk3q

导航

在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;
}

posted on 2021-11-02 21:47  wsk3q  阅读(258)  评论(0编辑  收藏  举报