dll函数的入口是这样的
[DllImport(@”C:\Users\xw\Desktop\Debug\MethodsDLL.dll”)]
extern static int crc16_modbus( char [] data, int length);
具体代码如下:
[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#的charr几个字节知道不?
{“1”, “3” …} = {49, 51 …}知道不?
10
方法1:单步调试本人定位找到问题。VS是可以直接从C#代码跳转到C++代码进行动态调试的
方法2:直接把代码改成C#。VS开unsafe,C++代码粘过去,几乎不用改什么就可以直接用了
方法2:直接把代码改成C#。VS开unsafe,C++代码粘过去,几乎不用改什么就可以直接用了