typedef struct
  {
        long SeriaINo;  //流水号
        UCHAR ValidateTime[7];  //有效期
        UCHAR IdentityCard[19]; //身份证号码
        UCHAR ICCardNo[13];    //卡编号
        UCHAR Name[17];        //姓名
        UCHAR gender;        //性别
  }_Badic_Info;int MakeCard(HANDLE icdev,LPCSTR psddword,_Basic_Info & Basic_Info,
              ussigned long&CardSn)用C#该怎么写

解决方案 »

  1.   

    [StructLayout(LayoutKind.Sequential)]
            public struct struct_Basic_Info
            {
                public const int vTime = 7;
                public const int idCard = 19;
                public const int icCard = 13;
                public const int name = 17;
                /// <summary>
                /// 流水号
                /// </summary>
                public int serialNo;
                /// <summary>
                /// 性别{男=1,女=0}
                /// </summary>
                public byte gender;
                /// <summary>
                /// 卡片有效期限 格式:YYMMDD
                /// </summary>
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = vTime)]
                public string validateTime;
                /// <summary>
                /// 身份证号码
                /// </summary>
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = idCard)]
                public string IdentityCard;
                /// <summary>
                /// IC卡号码
                /// </summary>
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = icCard)]
                public string ICCardNo;
                /// <summary>
                /// 姓名
                /// </summary>
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = name)]
                public string Name;
            };[DllImport("QuickDEVCard.dll",CharSet = CharSet.Auto)]
    public static extern int MakeCard(int icdev,[MarshalAs(UnmanagedType.LPStr)]     string  userPassword,ref  struct_Basic_Info rec,ref uint cardSN);                       为什么成功调用了,但是struct_Basic_Info这里存的数据都是乱码啊
      

  2.   

    一个是unicode编码,一个是char型本地编码,需要转换。
      

  3.   

    [DllImport("QuickDEVCard.dll",CharSet = CharSet.Auto)]最后的 CharSet 改成  Unicode
      

  4.   

    还是不行啊.出现乱码?validateTime,IdentityCard,ICCardNo这三个出现乱码