C#调用c++Dll,struct中套struct的问题

AubinXia 2007-07-03 09:15:47
我利用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,不知道这样行不?反正我试着发现,返回字符都不对的,应该是哪个地方除了问题才对。
...全文
395 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,571

社区成员

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

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

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