发布网友
共1个回答
热心网友
C# 结构体可以这样定义
/// <summary>
/// 卷头记录 Reel Trailer Record卷尾格式也一样 共128字节
/// <summary>
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] // [StructLayout(LayoutKind.Sequential, Pack = 1)] //顺序排列,并按1字节对齐
public struct ReelHeaderRecord
{
/// <summary>
/// 0000-0001 逻辑记录头
/// </summary>
[MarshalAs(UnmanagedType.U2, SizeConst = 2)]
public ushort LogicalRecordHeader;
/// <summary>
/// 0002-0007 服务名称6个字节
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst =6)]
public byte[] ServiceName;
/// <summary>
/// 0008-00013 空白1 默认值为0x20
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public byte[] Blank1;
/// <summary>
/// 00014-00021 日期 ASCII码表示
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst =8)]
public byte[] Data;
/// <summary>
/// 00022-00023 空白2 默认值为0x20
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] Blank2;
/// <summary>
/// 00024-00027 数据来源
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public byte[] OriginofDate ;
/// <summary>
/// 00028-00029 空白3 默认值为0x20
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] Blank3;
/// <summary>
/// 00030-00037 卷名字
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
public byte[] ReelName ;
/// <summary>
/// 00038-00039 空白4 默认值为0x20
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] Blank4;
/// <summary>
/// 00040-00041 卷间逻辑序号
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] ReelContinuationNumber ;
/// <summary>
/// 00042-00043 空白5 默认值为0x20
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] Blank5;
/// <summary>
/// 00044-00051 前邻卷名
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
public byte[] PreviousReelName ;
/// <summary>
/// 00052-00053 空白6 默认值为0x20
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] Blank6;
/// <summary>
/// 00054-00127注释
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 74)]
public byte[] Note;
}
网上有C#结构体转数组 数组转结构体的代码 字节数不少下来就可以用了
导入c++ DLL 可以像这样 DLL放到你运行程序的目录
[DllImport("你的DLL名称.dll")]
static extern void WriteData();
[DllImport("lisLib.dll")]
static extern void CloseData();
如果平台不对导入 要在 [DllImport 后面加一些语句就好,现在忘记了 以前用过