读书人

C#写的结构体通过SIZEOF获取结构体的大

发布时间: 2013-04-09 16:45:09 作者: rapoo

C#写的结构体通过SIZEOF获取结构体的大小问题

   public struct SXPSERVER
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst=6)]
public byte [] bNodeaddr;
public uint dwIp;//IP地址
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=16)]
public char[] szMachineType;
}
这是我的结构体
SXPSERVER s = new SXPSERVER();
int size = Marshal.SizeOf(s);
会提示SXPSERVER”不能作为非托管结构进行封送处理;无法计算有意义的大小或偏移量。 请问各位大婶是啥意思?
[解决办法]
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=16)]
public?char[]?szMachineType;

这代码错了,那个ByValTStr是用来修饰String类型的,你却用来修饰数组,如果是char[],必须用ByValArray,或者你直接修改为
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=16)]
public?string?szMachineType;

这代码错了,那个ByValTStr是用来修饰St

读书人网 >C#

热点推荐