Passage d'une struct contenant un tableau d'une DLL vers C#
Bonjour à tous,
Je souhaite communiquer avec une dll. Une fonction de cette dll me renvoi une structure :
Code:
1 2 3 4 5 6 7 8
| typedef struct DLLStrucure
{
uint8 Valeur1;
uint16 Valeur2;
uint32 Valeur3;
uint64 Valeur4;
float Valeur5;
} DLLStrucure ; |
Dans c#:
Code:
1 2 3 4 5 6 7 8 9 10 11
| public struct MyStruct
{
public byte Valeur1;
public UInt16 Valeur2;
public int Valeur3;
public UInt64 Valeur4;
public float Valeur5;
}
[DllImport("TestSbg.dll")]
public static extern MyStruct FunctionStruct(); |
Cela fonctionne correctement.:ccool:
Maintenant j'essaye de passer un tableau par la structure :
Dans la dll:
Code:
1 2 3 4 5 6 7 8 9
| typedef struct DLLStrucure
{
uint8 Valeur1[4];
uint16 Valeur2;
uint32 Valeur3;
uint64 Valeur4;
float Valeur5;
} DLLStrucure ; |
Dans mon programme c#:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| public struct MyStruct
{
public byte[] Valeur1;
public UInt16 Valeur2;
public int Valeur3;
public UInt64 Valeur4;
public float Valeur5;
public MyStruct(byte[] valeur1, UInt16 valeur2, int valeur3, UInt64 valeur4, float valeur5)
{
this.Valeur1 = valeur1;
this.Valeur2 = valeur2;
this.Valeur3 = valeur3;
this.Valeur4 = valeur4;
this.Valeur5 = valeur5;
}
public MyStruct(int taille)
{
this.Valeur1 = new byte[taille];
this.Valeur2 = new UInt16();
this.Valeur3 = new int();
this.Valeur4 = new UInt64();
this.Valeur5 = new float();
}
} |
Voici comment je déclare et appel la fonction de la dll:
Code:
1 2
| MyStruct TestStruct2 = new MyStruct(4);
TestStruct2 = FunctionStruct(); |
Et la j'ai l'erreur
Citation:
La signature du type de cette méthode n'est pas compatible avec PInvoke.
Quelqu'un aurait une idée d'ou vient le problème?
D'avance Merci.:calim2: