C#调用dll的问题

.Net技术 码拜 9年前 (2016-05-26) 1209次浏览
dll函数的入口是这样的
[DllImport(@”C:\Users\xw\Desktop\Debug\MethodsDLL.dll”)]
extern static int  crc16_modbus( char [] data, int  length);
具体代码如下:


METHODSDLL_API int _stdcall crc16_modbus( char data[], int  length)
{
unsigned char i;
int crc = 0xffff;        // Initial value
while (length–)
{
crc ^= *data++;            // crc ^= *data; data++;
for (i = 0; i < 8; ++i)
{
if (crc & 1)
crc = (crc >> 1) ^ 0xA001;        // 0xA001 = reverse 0x8005
else
crc = (crc >> 1);
}
}
return crc;
}
现在在C#里面调用这个函数
本人定义了一个字符数组传进去 char []p={“1″,”3″,”0″,”0″,”0″,”1”}; 得到的不是本人想要的答案
其实本人希望传进去{1 3 0 0 0 1},但是dll里面的函数又不识别byte型,求各位高手告知应该怎么办?

解决方案

20

c++的char几个字节知道不?

10

引用:

c++的char几个字节知道不?

还可以多提示两个问题:)
C#的charr几个字节知道不?
{“1”, “3” …} = {49, 51 …}知道不?

10

方法1:单步调试本人定位找到问题。VS是可以直接从C#代码跳转到C++代码进行动态调试的
方法2:直接把代码改成C#。VS开unsafe,C++代码粘过去,几乎不用改什么就可以直接用了

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C#调用dll的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)