C# 调用C/C++ dll 问题
C/C++
DWORD _stdcall GetSerialNum
(
IN HANDLE hCard,
OUT BYTE bSerial[NUMLEN]
);
我写的:
[DllImport("HS.dll", EntryPoint = "GetSerialNum")]
public static extern uint GetSerialNum([In]uint handl, [MarshalAs(UnmanagedType.LPArray)] byte[] data);
调用方法:
byte[] array= new byte[255];
Common.GetSerialNum(KeyHandle, array);
返回来的array 我用Encoding.Default.GetString(array)转换,拿到的是乱码
------解决方案--------------------试试Encoding.ASCII.GetString(array)
------解决方案--------------------不行的,Encoding.ASCII.GetString(array)转换来的结果是 8个字符
Encoding.Unicode.GetString(array)转换来的结果是
------解决方案--------------------额,不知道怎么发图。。。。不过就是乱码。。。我想就是我传参数的问题了,OUT BYTE bSerial[NUMLEN]
这应该传什么呢。Byte的定义是typedef unsigned char BYTE;