unmanaged structure layout error
Mike Andrews <[email protected]> Wed, 11 Nov 2009 13:04:19 -0600
| Newsgroups | gmane.comp.windows.devel.dotnet.advanced |
|---|---|
| Message-ID | <[email protected]> |
I'm having a problem with an unmanaged structure.
I'm getting this error message when the system tries to load the type:
*Could not load type '_S' from assembly '...' because it contains an object
field at offset 134 that is incorrectly aligned or overlapped by a
non-object field.*
For the life of me I cannot figure this out why this is failing.
I've set the byte packing to 1 which means that there is no padding between
bytes. I've also explicitly specified each field offset.
Below is the structure that I have declared. It's only a partial structure
and I removed all the properties for brevity. Also there's more members but
the last field is where the error is occurring. Also, if I remove the last
field it works. When I add it back it fails.
Any suggestions?
Thanks,
Mike
[StructLayout(LayoutKind.Explicit, CharSet = CharSet.Ansi, Pack = 1)]
private struct _S {
[FieldOffset(0)]
private System.Double _height;
[FieldOffset(8)]
private System.Double _width;
[FieldOffset(16)]
private System.Double _depth;
[FieldOffset(24)]
private System.Double _a;
[FieldOffset(32)]
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
private System.Byte[] _u1;
[FieldOffset(56)]
private System.UInt16 _number;
[FieldOffset(58)]
private System.UInt16 _d;
[FieldOffset(60)]
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
private System.Byte[] _u2;
[FieldOffset(64)]
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 70)]
private System.String _name;
[FieldOffset(134)]
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 33)]
private System.String _address1;
===================================
View archives and manage your subscription(s) at http://peach.ease.lsoft.com/archives