调用DLL的函数,回传参数是一个struct,见下,其中位数是定长的,char的处理没问题,unsigned int 我问过提供者了,说是4个字节的,可我在C#里用int 就是不行,哪位知道应该用什么?还有unsigned short和short类型,提供者说是2位的.我现在必须要正确,否则错一位,后面全是乱的.我本来想了一个折中的办法,用string类型代替int ,因为string可以通过[MarshalAs(UnmanagedType.ByValTStr, SizeConst=21)]定制长度,这样char的数据都可读出来,可是那些用string代替int的就是乱码了,有谁能处理的话也行!
typedef struct{ char Name[21]; /*姓名*/ char SexNo[2]; /*性别*/ char DeptCode[19]; /*部门代码*/ unsigned int CardNo; /*卡号*/ unsigned int AccountNo; /*帐号*/ char StudentCode[21]; /*学号*/ char IDCard[21]; /*身份证号*/ char PID[3]; /*身份代码*/ char IDNo[13]; /*身份序号*/ int Balance; /*现余额*/ char Password[7]; /*消费密码*/ char ExpireDate[7]; /*账户截止日期*/ unsigned short SubSeq; /*补助戳*/ char IsOpenInSys; /*是否在本系统内开通*/ short RetCode; /*后台处理返回值*/
} Accout;
typedef struct{ char Name[21]; /*姓名*/ char SexNo[2]; /*性别*/ char DeptCode[19]; /*部门代码*/ unsigned int CardNo; /*卡号*/ unsigned int AccountNo; /*帐号*/ char StudentCode[21]; /*学号*/ char IDCard[21]; /*身份证号*/ char PID[3]; /*身份代码*/ char IDNo[13]; /*身份序号*/ int Balance; /*现余额*/ char Password[7]; /*消费密码*/ char ExpireDate[7]; /*账户截止日期*/ unsigned short SubSeq; /*补助戳*/ char IsOpenInSys; /*是否在本系统内开通*/ short RetCode; /*后台处理返回值*/
} Accout;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货