C# 中引用C/C++中dll包中的函数,传递中文字符串到dll的函数中

在调用飞易来C/C++ dll中有如下接口,调用该接口需要传递中文字符串InputStr。我需要将我的中文字符通过该接口传递给dll。

从网上资料查到

 C++中的PBYTE对应C#中的ref byte。

PBYTE 就是 BYTE *,BYTE就是unsigned char。
char* 对应C#中的Byte[]

所以我该传递的是byte[]类的数据。 

[DllImport("msdk.dll", EntryPoint = "M_KeyInputStringGBK", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern int M_KeyInputStringGBK(IntPtr m_hdl, ref byte InputStr, int InputLen);

最终代码如下:

string str = "这是测试ABC@123!""
Encoding gbk = Encoding.GetEncoding("gbk");
byte[] inputByte = gbk.GetBytes(str);

int res = Msdk.M_KeyInputStringGBK(M_Handle, ref inputByte[0], inputByte.Length);

调用成功。请注意,在调用函数时,传递的是 ref  inputByte[0],也就是第一个byte的首地址。

你可能感兴趣的:(C#)