C#调用c++Dll,struct中套struct的问题
我利用C#调用c++dll,调用的数据结构如下所示:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct tagMemberInfo
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string customerID; // 会员号
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string name; // 姓名,不得为空
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string password; // 密码,不超过12位,不得为空
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string pwdBeSure; // 确认密码,需与密码核实
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)]
public string idCard; // 身份证,不得为空,15位或18位,需详细校验,15位需转成18位
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string birthDay; // 出生日期,需与身份证核实,可以为空
[MarshalAs(UnmanagedType.I1)]
public bool gender; // 性别,男TRUE,女FALSE
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 500)]
public string address; // 地址,可以为空,不超过255位
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string postcode; // 邮编,可以为空,或者必须为6位
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string telephone; // 联系电话,可以为空,10到15位
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string email; // 邮箱,可以为空,或者必须包含'@','@'之后至少有一个'.'
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string registerTime; // 注册时间,无需判断
[MarshalAs(UnmanagedType.R8)]
public double credit; // 积分
};
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct tagInfoQueryRet
{
[MarshalAs(UnmanagedType.I1)]
public bool SuccessOrNot;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]
public string errmsg;
public tagMemberInfo memInfo;
};
我在第二个结构里嵌套了第一个tagMemberInfo,不知道这样行不?反正我试着发现,返回字符都不对的,应该是哪个地方除了问题才对。