Bonjour,

J'utilise une dll qui avec une fonction qui renvoie un pointeur sur un tableau de structure complexe (utilisant des float, int, ...)
Pour résumer voici un exemple de ce que je veux faire
En C:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
typedef struct
{ 
	uint8 telfixe; 
	float telPort; 
} MASTRUCTURETEL;
 
MASTRUCTURETEL DLL_EXPORT * GetTabStructure() 
{ 
	TabmaStruct[1].telfixe = 128;
	TabmaStruct[1].telPort = -666.66; 
	return &maStruct;
}
Coté C# :
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
18
 [StructLayout(LayoutKind.Sequential)]
    public class MaStructTelCSharp
    {
        public byte telFixe;
        public float telMobile;
    }
 
 
 
[DllImport("SbgDriver.dll")]
        public static extern IntPtr GetTabStructure();
 
 
 
MaStructTelCSharp[] maStructureCSharp = new MaStructTelCSharp[2];
IntPtr tabUnmanaged = Marshal.AllocHGlobal(Marshal.SizeOf(maStructureCSharp[1]) * 2);
tabUnmanaged = GetTabStructure();
Marshal.PtrToStructure(tabUnmanaged, maStructureCSharp);
Quand je lance le code j'ai cette erreur:
La structure spécifiée doit être blittable ou avoir des informations de disposition. Nom du paramètre : structure

Je souhaite réussir mon exemple simple avant de m'attaquer à mon driver qui renvoie une structure beaucoup plus complexe. (de plus je n'ai pas accès au code de la dll finale).
Pourriez vous m'aider?