首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET Framework >

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

2012-12-23 
C#调用C/C++ dll 问题C/C++DWORD _stdcall GetSerialNum(IN HANDLE hCard, OUT BYTE bSerial[NUMLEN] )我

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;

热点排行