根据struct SCHead {
WORD m_nType;
char m_cStatus;
long m_lIndex;
};改写[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct SCHead
{
public UInt16 m_nType;
public Char m_cStatus;
public Int32 m_lIndex;
}发现2个的sizeof相差1位,可能是造成接口调用出错的原因调试后发现问题出在char类型,
c++下,sizeof(sca.m_Head.m_cStatus)为1
而c#下,为2应怎样设置,可以使他们的size相同
WORD m_nType;
char m_cStatus;
long m_lIndex;
};改写[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct SCHead
{
public UInt16 m_nType;
public Char m_cStatus;
public Int32 m_lIndex;
}发现2个的sizeof相差1位,可能是造成接口调用出错的原因调试后发现问题出在char类型,
c++下,sizeof(sca.m_Head.m_cStatus)为1
而c#下,为2应怎样设置,可以使他们的size相同
[StructLayout(LayoutKind.Explicit)]
public class SYSTEM_INFO
{
[FieldOffset(0)] public ulong OemId;
[FieldOffset(4)] public ulong PageSize;
[FieldOffset(16)] public ulong ActiveProcessorMask;
[FieldOffset(20)] public ulong NumberOfProcessors;
[FieldOffset(24)] public ulong ProcessorType;
}
>>>
public byte m_cStatus;.NET的char都是unicode的,native的char对应byte