utiliser fonction retournant un pointeur d'un tableau de structure
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:
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:
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:
Citation:
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?