日期:2014-05-17  浏览次数:21311 次

C# 调用 C++ dll文件 出现“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
读卡信息接口
   原    型:int ReadBaseMsg( unsigned char * pMsg, int * len);
   说    明:本函数用于读取卡中基本信息,包括文字信息与图像信息。文字信息已经分段解析,输出格式为单字节,且每一字段信息已经被表示为字符串。图象信息被解码后存为文件photo.bmp(在当前工作目录下)。
   参    数: 
pMsg  [out] 无符号字符指针,指向读到的文本信息。需要在调用时分配内存,字节数不小于192。函数调用成功后,各字段的文本信息已经转换为单字节形式,并表示为字符串格式。
Len [out] 整数, 返回总字符长度,可以给空值(NULL)。


我尝试过用C#的方法:
[DllImport("sdtapi.dll")]
 public static extern int ReadBaseMsg([MarshalAs( UnmanagedType.I1)] byte s, out int len);

结果不行,就大婶们赐教!!

------解决方案--------------------
要不len这个长度参数还有什么意义???