首页 > 应用开发 > > C# 调用 C++ 类库传结构体转换的问题。
公司项目想接入中行,需要调用一个 C++ 写的 DLL 类库。
C++ 的代码如下:

C# 的结构体我该怎么声明?
我查阅资料 char 和 string 对应,但是 MarshalAs 属性不知道该怎么写。
1 [StructLayout(LayoutKind.Sequential)]
2 public struct REQUEST
3 {
4 /// <summary>
5 /// 交易类型。
6 /// </summary>
7 [MarshalAs(UnmanagedType.U2)]
8 public string szPackType;
9 /// <summary>
10 /// 交易金额,前补 0,精确到分,如“000000000100”表示1元。
11 /// </summary>
12 [MarshalAs(UnmanagedType.U4)]
13 public string szAmount;
14 /// <summary>
15 /// 卡号 (撤销、预授权完成时)。
16 /// </summary>
17 [MarshalAs(UnmanagedType.U1)]
18 public string szCardNo;
19 /// <summary>
20 /// 有效期 (撤销、预授权完成时)。
21 /// </summary>
22 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
23 public string szExpr;
24 /// <summary>
25 /// 原流水号(退货,电子现金退货用) or 原票据号 (重打印,撤销用)。
26 /// </summary>
27 public string szTraceNo;
28 /// <summary>
29 /// 原授权码(退货用)。
30 /// </summary>
31 public string szAuthId;
32 /// <summary>
33 /// 原参考号。
34 /// </summary>
35 public string szRefNo;
36 /// <summary>
37 /// 原日期(退货,电子现金退货用)格式为 YYYYMMDD。
38 /// </summary>
39 public string szDateDate;
40 /// <summary>
41 /// 原时间(退货,电子现金退货用)格式为 HHMMSS。
42 /// </summary>
43 public string szDateTime;
44 /// <summary>
45 /// 款台号,收银机编号, 该商场内唯一,全数字,左补零。
46 /// </summary>
47 public string szDesktopNo;
48 /// <summary>
49 /// 收银员编号。
50 /// </summary>
51 public string szOperator;
52 /// <summary>
53 /// 原终端号。
54 /// </summary>
55 public string szTermId;
56 };来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3598/viewspace-3133800/ ,如需转载,请注明出处,否则将追究法律责任。