读书人

C# 调用C/C++ dll 有关问题

发布时间: 2012-12-23 11:28:15 作者: rapoo

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;

读书人网 >.NET Framework

热点推荐