
C#如何封装C++嵌套结构体,是结构体里面嵌套了多个结构体
C++中的结构体:大结构体:struct{DWORDdwSize;DWORDdwGroupNum;DWORDdwAChanNum;DWORDdwDChanNum;DWOR...
C++中的结构体:
大结构体:
struct{ DWORD dwSize;
DWORD dwGroupNum;
DWORD dwAChanNum;
DWORD dwDChanNum;
DWORD dwStartDChan;
BYTE byAnalogChanEnable[MAX_CHANNUM_V30];NET_DVR_IPDEVINFO_V31 struIPDevInfo[MAX_IP_DEVICE_V40];NET_DVR_STREAM_MODE struStreamMode[MAX_CHANNUM_V30]; BYTE byRes2[20];}NET_DVR_IPPARACFG_V40, *LPNET_DVR_IPPARACFG_V40;
子结构体:
struct{ BYTE byEnable;
BYTE byProType;
BYTE byEnableQuickAdd;
BYTE byRes1;
BYTE sUserName[NAME_LEN];
BYTE sPassword[PASSWD_LEN];
BYTE byDomain[MAX_DOMAIN_NAME];
NET_DVR_IPADDR struIP;
WORD wDVRPort;
BYTE byRes2[34];}NET_DVR_IPDEVINFO_V31, *LPNET_DVR_IPDEVINFO_V31;
struct{ BYTE byGetStreamType;
BYTE byRes[3];
NET_DVR_GET_STREAM_UNION uGetStream;}NET_DVR_STREAM_MODE,*LPNET_DVR_STREAM_MODE;
我先贴出来第一层结构体和里面嵌套的两个小的结构体,小结构体里面嵌套的结构体就不贴了,其中 NET_DVR_IPADDR和 NET_DVR_GET_STREAM_UNION是子结构体里面用到的结构体。高手指教下,谢谢! 展开
大结构体:
struct{ DWORD dwSize;
DWORD dwGroupNum;
DWORD dwAChanNum;
DWORD dwDChanNum;
DWORD dwStartDChan;
BYTE byAnalogChanEnable[MAX_CHANNUM_V30];NET_DVR_IPDEVINFO_V31 struIPDevInfo[MAX_IP_DEVICE_V40];NET_DVR_STREAM_MODE struStreamMode[MAX_CHANNUM_V30]; BYTE byRes2[20];}NET_DVR_IPPARACFG_V40, *LPNET_DVR_IPPARACFG_V40;
子结构体:
struct{ BYTE byEnable;
BYTE byProType;
BYTE byEnableQuickAdd;
BYTE byRes1;
BYTE sUserName[NAME_LEN];
BYTE sPassword[PASSWD_LEN];
BYTE byDomain[MAX_DOMAIN_NAME];
NET_DVR_IPADDR struIP;
WORD wDVRPort;
BYTE byRes2[34];}NET_DVR_IPDEVINFO_V31, *LPNET_DVR_IPDEVINFO_V31;
struct{ BYTE byGetStreamType;
BYTE byRes[3];
NET_DVR_GET_STREAM_UNION uGetStream;}NET_DVR_STREAM_MODE,*LPNET_DVR_STREAM_MODE;
我先贴出来第一层结构体和里面嵌套的两个小的结构体,小结构体里面嵌套的结构体就不贴了,其中 NET_DVR_IPADDR和 NET_DVR_GET_STREAM_UNION是子结构体里面用到的结构体。高手指教下,谢谢! 展开
展开全部
看你的定义里有数组,有Struct嵌套,给你的例子参考:C++: typedef struct{
BYTE ByteV[10];
} StructA;
typedef struct
{
BYTE ByteV[10];
StructA StructAs[20];
} StructB;
C#: [StructLayout(LayoutKind.Sequential, Pack=1, CharSet=CharSet.Ansi)]
public struct StructA
{
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=10)]
public byte[] ByteV;
};
[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Ansi)]
public struct StructB
{
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=10)]
public byte[] ByteV;
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=20)]
public StructA[] StructAs;
};
-手写的,仅供参考
BYTE ByteV[10];
} StructA;
typedef struct
{
BYTE ByteV[10];
StructA StructAs[20];
} StructB;
C#: [StructLayout(LayoutKind.Sequential, Pack=1, CharSet=CharSet.Ansi)]
public struct StructA
{
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=10)]
public byte[] ByteV;
};
[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Ansi)]
public struct StructB
{
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=10)]
public byte[] ByteV;
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=20)]
public StructA[] StructAs;
};
-手写的,仅供参考
展开全部
在Visual C++里添加如下程序:
struct A
{
int a;
struct B * b;
};
struct B
{
int b;
struct A * a;
};
struct C
{
int c;
struct B * b;
struct A * a;
};
..........
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看你的定义里有数组,有Struct嵌套,给你的例子参考:C++: typedef struct{
BYTE ByteV[10];
} StructA;
typedef struct
{
BYTE ByteV[10];
StructA StructAs[20];
} StructB;
C#: [StructLayout(LayoutKind.Sequential, Pack=1, CharSet=CharSet.Ansi)]
public struct StructA
{
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=10)]
public byte[] ByteV;
};
[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Ansi)]
public struct StructB
{
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=10)]
public byte[] ByteV;
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=20)]
public StructA[] StructAs;
};
-手写的,仅供参考
BYTE ByteV[10];
} StructA;
typedef struct
{
BYTE ByteV[10];
StructA StructAs[20];
} StructB;
C#: [StructLayout(LayoutKind.Sequential, Pack=1, CharSet=CharSet.Ansi)]
public struct StructA
{
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=10)]
public byte[] ByteV;
};
[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Ansi)]
public struct StructB
{
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=10)]
public byte[] ByteV;
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=20)]
public StructA[] StructAs;
};
-手写的,仅供参考
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询