ITPub博客

首页 > > > c++类型向c#转化的问题

c++类型向c#转化的问题

作者:choubou 时间:2019-09-24 11:33:51 0 删除 编辑

问题如下:有2个c++结构体:

typedef struct _AlarmStatus

{

char deviceid[24];  // 报警设备编码

char status[16];   // 报警设备状态:ONDUTY,OFFDUTY,ALARM

}AlarmStatus;

typedef struct _DeviceStatus

{

int                 result;         // 查询结果标志:0成功,1失败

char    online[8];  // 是否在线:ONLINE,OFFLINE

char    status[32];  // 是否正常工作

char    reason[256]; // 不正常工作原因

char    encode[32];  // 是否编码

char    record[32];  // 是否录像

char    deviceTime[32]; // 设备时间和日期

int                 num;      // 报警设备状态列表个数

AlarmStatus* alarmStatus; // 报警设备状态列表

}DeviceStatus;

第一个转化为c#是

public struct AlarmStatus

{

[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 24)]

public string deviceid;  // 报警设备编码

[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]

public string status;   // 报警设备状态:ONDUTY,OFFDUTY,ALARM

}

那么第二个结构体的最后一句怎么转化?

public struct DeviceStatus

{

public int result;         // 查询结果标志:0成功,1失败

[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]

public string online;  // 是否在线:ONLINE,OFFLINE

[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]

public string status;  // 是否正常工作

[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]

public string reason; // 不正常工作原因

[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]

public string encode;  // 是否编码

[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]

public string record;  // 是否录像

[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]

public string deviceTime; // 设备时间和日期

public int num;      // 报警设备状态列表个数

public  (_____________________________) // 报警设备状态列表

}

括号里应该怎么写?求大神指教!

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4548/viewspace-3163871/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-10-08

  • 博文量
    175
  • 访问量
    10707