tmpStruct 这个对象的大小用sizeof计算是不对的,除非你已经在该类上用 [StructLayout(LayoutKind.Sequential)] 显示指定过,具体内部的每个成员也都要指定。

解决方案 »

  1.   

    [Serializable]                                   // 可序列化
            [StructLayout(LayoutKind.Sequential, Pack = 1)]  // 指按1字节对齐
            public struct CHARGE_ACCOUNTINFO
            {
            }
    这是结构体的定义
      

  2.   

    没有字符串,都是数组,比如int[], char[], ushort[]
      

  3.   

    如果是数组,那你有在数组前面写[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]这么一句么?
    SizeConst  的值是你的数组长度
      

  4.   

    还有C#中的char是占两个字节的,如果你C++中用的是char的话。在C#中请用SByte来对应