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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
typedef struct Entree{
	int numseq;
}Rec;
Fonction 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;
}
Coté C# :
Ma classe correspondante :
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);
}
Erreur lors de l'execution :
La structure specifié doit etre blittable ou avoir des informations de disposition.

Je ne vois pas l'erreur
Merci de votre aide