111,098
社区成员




//被嵌套结构体
typedef struct {
CHAR a[ 19 ];
CHAR b;
WORD c;
} OBE, *LPOBE;
//外层结构体
typedef struct {
DWORD d;
OBE ObeInfo;
} CARD, *LPCARDT;
//被嵌套结构体
[StructLayout(LayoutKind.Sequential)]
public struct OBE{
[MarshalAs(UnmanagedType.ByValArray,SizeConst=19)]
public char[] a;
public char b;
public uint16 c;
}
//外层结构体
[StructLayout(LayoutKind.Sequential)]
public struct CARD{
public uint d;
//这个地方不知道怎么写了!!!
[MarshalAs(UnmanagedType.Struct)]
public OBE ObeInfo;
}
[StructLayout(LayoutKind.Sequential, CharSet= CharSet.Ansi)]
public struct OBE{
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=19)]
public string a;
public sbyte b;
public UInt16 c;
}
//外层结构体
[StructLayout(LayoutKind.Sequential)]
public struct CARD{
public UInt32 d;
public OBE ObeInfo;
}
[StructLayout(LayoutKind.Sequential)]
public struct OBE{
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=19)]
public string a;
public byte b;
public UInt16 c;
}
//外层结构体
[StructLayout(LayoutKind.Sequential)]
public struct CARD{
public UInt32 d;
public OBE ObeInfo;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
在结构体中嵌套结构体,没有特殊的写法
直接写就可以
public struct SServer
{
public SAdvance m_advanceCfg;
}
char[] 也可以用string来对应
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 19)]
public string mStrTemp;