Próbuję utworzyć następującą strukturę:nieprawidłowo wyrównane lub zakryte przez błędu pola zakaz obiektu
[StructLayout(LayoutKind.Explicit, Size=14)]
public struct Message
{
[FieldOffset(0)]
public ushort X;
[FieldOffset(2)]
[MarshalAs(UnmanagedType.ByValArray, SizeConst=5)]
private ushort[] Y;
[FieldOffset(12)]
public ushort Z;
}
i pojawia się następujący błąd:
Nie można załadować typu „Wiadomość” z złożenie, ponieważ zawiera pole obiektu przy przesunięciu 4, które jest niepoprawnie wyrównane lub zachodzi na pole nieobiektowe.
Czy ktoś wie, dlaczego powoduje to błąd?
Uwaga: Nie można używać pakietu, ponieważ pracuję z kompaktową strukturą. Dzięki.
OK, więc najprostsza odpowiedź znajduje się w komentarzu poniżej: Tablice muszą być wyrównane do DWORD w CF – SwDevMan81
@cena: Czy możesz skierować mnie do referencji, która zawiera szczegółowe informacje o CF Marshaler (np. Że tablice muszą być DWORD podzielone)? – Odrade
@david: Nie znam jednego. Wszystko, co wiem o marszu i jego możliwościach (lub ich braku) pochodzi ze spotkań i rozmów z zespołem CF, w połączeniu z wieloletnim doświadczeniem próbującym zmusić go do zrobienia tego, co chcę. – ctacke