请问一下C++变量对应的问题

清澈如湖 2018-03-21 05:41:08
因为业务需要调用C++的dll文件
C++中的
接口文档如下:
int __stdcall GetBasicInfo_V4(HANDLE icdev,_Basic_Info_V4 &BasicInfo,unsigned
long &CardSN);

结构体如下:
Type Basic_Info
SerialNo As Long '流水号
ValidateTime As String * 7 '失效日
IdentityCard As String * 19
ICCardNo As String * 13
name As String * 17
Gender As Byte
End Type

我这边这样子定义:
public struct Basic_Info
{
public int SerialNo; //流水号
public string[] ValidateTime; //失效日
public string[] IdentityCard;
public string[] ICCardNo;
public string[] name;
public byte Gender;
}

调用:
Basic_Info BasicInfo = new Basic_Info();
BasicInfo.SerialNo = 0;
BasicInfo.ValidateTime = new string[7];
BasicInfo.IdentityCard = new string[19];
BasicInfo.ICCardNo = new string[13];
BasicInfo.name = new string[17];
BasicInfo.Gender = new byte();

ulong CardSN = 0;
int s = GetBasicInfo_V4(icdev, ref BasicInfo, ref CardSN);

会报错:
尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

请问一下这个结构体我应该怎么定义,分不多,还请大虾指点。
...全文
88 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
清澈如湖 2018-03-21
  • 打赏
  • 举报
回复
晕,自己百度解决了 不能使用string[]。而是这样写 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 7)] public string ValidateTime; //失效日

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧