Bonjour,
J'aurai aimé savoir si il était possible d'échanger entre une dll developpée en C et un programme C# un tableau de structure.
Rien ne vaut un exemple pour ce faire comprendre :
structure en C :Fonction C :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 typedef struct Entree{ int numseq; }Rec;
Coté C# :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 extern "C" __declspec(dllexport) void * Hello() { Rec * s = (struct Entree*)malloc(4*sizeof(struct Entree)); return s; }
Ma classe correspondante :
Erreur lors de l'execution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 [StructLayout(LayoutKind.Sequential)] public class Entree { public Int32 numseq; } Fonction C# réalisant le marshaling : private void button1_Click(object sender, System.EventArgs e) { IntPtr handle = Hello(); AdresseIn[] s = new AdresseIn[10]; s[0] = new AdresseIn(); s[1] = new AdresseIn(); s[2] = new AdresseIn(); s[3] = new AdresseIn(); Marshal.PtrToStructure(handle, s); }
La structure specifié doit etre blittable ou avoir des informations de disposition.
Je ne vois pas l'erreur
Merci de votre aide
Partager