日期:2014-05-20  浏览次数:20889 次

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;