首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

在开一贴(C#调用C的dll)高人们进来看下啊该怎么解决

2012-02-19 
在开一贴(C#调用C的dll)高人们进来看下啊原码:typedefstruct{longSeriaINo//流水号UCHARValidateTime[7]

在开一贴(C#调用C的dll)高人们进来看下啊
原码:
    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#该怎么写

[解决办法]
public struct Badic_Info
{
int SeriaINo;
[MarshalAs(UnManagedType.ByValStr,SizeConst=7)]
string ValidateTime;
[MarshalAs(UnManagedType.ByValStr,SizeConst=19)]
string IdentityCard;
[MarshalAs(UnManagedType.ByValStr,SizeConst=13)]
string ICCardNo;
[MarshalAs(UnManagedType.ByValStr,SizeConst=17)]
string Name;
byte gender;
}

int MakeCard(IntPtr icdev,[MarshalAs(UnManagedType.ByLptStr)]string psddword,ref Basic_Info basic_Info, ref uint CardSn);
[解决办法]
大概觉得该这么写:
struct _Badic_Info
{
long SeriaINo; //流水号
string ValidateTime; //有效期
string IdentityCard; //身份证号码
string ICCardNo; //卡编号
string Name; //姓名
string gender; //性别
}

int MakeCard(long icdev,string psddword,ref _Basic_Info Basic_Info,
ref usigned long CardSn)

试试看
[解决办法]
改成:

MarshalAs(UnManagedType.LPTStr)]string psddword
[解决办法]
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential)]
public struct Basic_Info
{
[MarshalAs(UnmanagedType.U8)]
public string SeriaINo ;

[MarshalAs(UnmanagedType.ByValTStr,SizeConst=8)]
public string ValidateTime;

[MarshalAs(UnmanagedType.ByValTStr,SizeConst=20)]
public string IdentityCard;

[MarshalAs(UnmanagedType.ByValTStr,SizeConst=14)]
public string ICCardNo;

[MarshalAs(UnmanagedType.ByValTStr,SizeConst=18)]
public string Name;

[MarshalAs(UnmanagedType.ByValTStr,SizeConst=2)]
public string gender
}
[解决办法]
刚才写错了,sorry:

[StructLayout(LayoutKind.Sequential)]
public struct Basic_Info
{
[MarshalAs(UnmanagedType.U8)]
public long SeriaINo;

[MarshalAs(UnmanagedType.ByValTStr,SizeConst=8)]
public string ValidateTime;

[MarshalAs(UnmanagedType.ByValTStr,SizeConst=20)]
public string IdentityCard;

[MarshalAs(UnmanagedType.ByValTStr,SizeConst=14)]
public string ICCardNo;


[MarshalAs(UnmanagedType.ByValTStr,SizeConst=18)]
public string Name;

[MarshalAs(UnmanagedType.ByValTStr,SizeConst=2)]
public string gender;
}

热点排行