Bonjour,

Je souhaiterais marshaller la structure C++ suivante

Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
struct MyStruct
{
  int i1;
  BYTE array[20]
  int i2;
};

cette structure c++ fait 28 octects

Voici la solution C# pour laquelle j'avais opté sans succès:

Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
[StructLayout(LayoutKind.Explicit, Size = 28)]
public struct MyStruct
{
    [FieldOffset(0)]
    public Int32 i;
    [FieldOffset(4)]
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
    public Byte[] byteArray;
    [FieldOffset(24)]
    public Int32 i2;
}
Cette structure fais bien 28 octects, mais le probleme se situe au niveau du tableau de Byte. En effet, ce champs se comporte comme un pointeur vers un tableau de Byte plutot que comme un tableau de Byte "embarqué" dans la structure.

Que puis-je faire pour remédier à ce problème ? (Je travail en CF .NET)

Merci pour votre aide