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的首地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值