C# 调用C++函数中的结构体报错 尝试读取或写入受保护的内存.这通常指示其他内存已损坏.

这是C#按照C++写的结构体

[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct _Basic_Info
{
public Int32 Serial_No;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)]
public sbyte[] ValidateTime;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 19)]
public sbyte[] IdentityCard;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 13)]
public sbyte[] ICCardNo;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 17)]
public sbyte[] Name;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)]
public sbyte[] gender; };

这是C++中的结构体

typedef struct
{
long Serial_No;
UCHAR ValidateTime[7];
UCHAR IdentityCard[19];
UCHAR ICCardNo[13];
UCHAR gender;
}

然后我初始化之后调用这个C++的函数就报错 :
尝试读取或写入受保护的内存.这通常指示其他内存已损坏.
下面是C#的方法调用:
demo = makeCard_N(handle, userPwd, s, b, userCardType);
C++的
function long MakeCard_N(long icdev, string UserPassword,Str_Basic_Info rec,ref ulong CardSN,string UserCardType) library "CRCDASCard30"

请各位大神搭救啊。。。
坐等。
C++中的结构体

typedef struct
{
long Serial_No;
UCHAR ValidateTime[7];
UCHAR IdentityCard[19];
UCHAR ICCardNo[13];
UCHAR Name[17];
UCHAR gender;
}

第1个回答  2013-10-10
ddddddddddddddddddddddddddddddddddddddssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
相似回答
大家正在搜