帮我瞧瞧 为什么调用c++的dll文件的struct结构里的值才一个

liu20071001 2009-03-23 05:12:47
c++
struct stuStudentInfoA
{
CHAR strZKZH[13]; //准考证号
CHAR strSFZMHM[20];//身份证明号码
CHAR strXM[32]; //姓名
CHAR strXB[3]; //姓别
CHAR strKSCX[3]; //考试车型
CHAR strYKRQ[16]; //约考日期
};
int __stdcall ReadStudentInfoA(int nKSNR,LPCSTR strZJHM,int nType,stuStudentInfoA *lpInfo,BOOL bFirstXMofLK=FALSE);

c# 任务:根据身份证号, 比如“140122199001011234”获取 学员的基本信息(c++反馈的信息)
[StructLayout(LayoutKind.Sequential,Pack = 1)]
public struct stuStudentInfoA
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public string strZKZH; //准考证号
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public string strSFZMHM;//身份证明号码
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public string strXM; //姓名
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public string strXB; //姓别
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public string strKSCX; //考试车型
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public string strYKRQ; //约考日期
}
class
{
[DllImport("link.dll",CharSet=CharSet.Ansi)]
public static extern int ReadStudentInfoA(int nKSNR, System.String strZJHM, int nType, ref stuStudentInfoA lpInfo, System.Boolean bFirstXMofLK);

stuStudentInfoA ipinfo=new stuStudentInfoA();
int result=ReadStudentInfoA(1, "140122199001011234", 1, ref ipinfo, false)
string str_ZKZH =ipinfo.strZKZH;//就这一个反馈可以
string str_SFZMHM=ipinfo.strSFZMHM;//都不行了
...
}
...全文
83 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
liu20071001 2009-03-24
  • 打赏
  • 举报
回复
谢谢,哈自己给自己加分吗
liu_20071001 2009-03-24
  • 打赏
  • 举报
回复
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
的值要与原来的匹配
CHAR strZKZH[13]; //准考证号
SizeConst = 256 改为13

111,126

社区成员

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

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

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