Bonjour,
Pour communiquer avec une dll qui passe des pointeur de pointeur de structure, je dois créer en C# l'équivalent de ces structures:

les strutures en c:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
typedef struct _PointList
{
    Point	    *m_pPointList;		// List of point
    uint32		 m_numPoints;	// Number of points
    ...
} PointList;
 
typedef struct _Point
{
    float	m_point[3];		// X, Y, Z components of our point
} Point;
Voici ce que j'ai crée 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
14
15
[StructLayout(LayoutKind.Sequential)]
    public struct PointList
    {
        public unsafe Point* m_pPointList;
        public UInt32 m_numPoints; 
        ...
    }

    [StructLayout(LayoutKind.Sequential)]
    public struct Point
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public float[] m_point;
    }
J'ai autorisé le code unsafe dans mon projet et quand je compile j'ai l'erreur suivante :
Erreur 1 Impossible de prendre l'adresse, d'obtenir la taille ou de déclarer un pointeur vers un type managé ('Frame_3d.Point')
Quelqu'un pourrait il m'aider?
D'avance merci.