Spędziłem dużo czasu, szukając rozwiązania, ale wciąż go nie znajduję.Szereg struktur Marshalla
Mam 2 klasy:
[StructLayout(LayoutKind.Sequential)]
public class Result
{
public int Number;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
public string Name;
public int Size;
}
[StructLayout(LayoutKind.Sequential)]
public class CoverObject
{
public int NumOfResults;
[MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 4)]
public Result[] Results;
}
moje oczekiwanie, że polecenie Marshal.SizeOf(typeof(CoverObject))
powróci 52, ale nie, to tylko 20. Tak więc, wszystkie Marshall i wycofać że używam później nie działają.
Wygląda na to, że liczy tylko pierwszy element (Number) w klasie Result. Czy robię coś źle?
Co twoi niezarządzani elemencie wyglądać? –
Masz na myśli struct napisany w C/C++? –
@TuTran Tak, a także deklaracje funkcji pinvoke –