Ho passato molto tempo a cercare la soluzione ma non la trovo ancora.Marshall array of structures
ho 2 classi:
[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;
}
La mia aspettativa che il comando Marshal.SizeOf(typeof(CoverObject))
restituirà 52, ma non, è solo 20. Così, tutti Marshall e unmarshall che uso entro e non funzionano.
All'apparenza conta solo il primo membro (numero) nella classe Result. Ho fatto qualcosa di sbagliato?
Che cosa i vostri struct non gestiti assomigliano? –
Intendi struct scritto in codice C/C++? –
@TuTran Sì, e anche le dichiarazioni della funzione pinvoke –