Je dois obtenir la valeur du code non géré C
. En fait, j'ai appelé la fonction de non géré, le type de retour de la fonction est le point où le point est une structure.Obtenir la valeur du code non géré au code managé
la structure mentionnée manière suivante
typedef struct point
{
Poly* pol;
NL_DEGREE p;
VECTOR* vec;
} Point;
Lorsque Poly
et VECTOR
sont structure.
En fait, j'obtenu le point de valeur de retour comme IntPtr
dans C#
.Après obtenir la valeur de IntPtr
, j'ai essayé de convertir ce Intptr
à un Array
. Convertir le Array
de cette manière ci-dessous.
point[] Q = new point[2];
int size= Marshal.SizeOf(new point());
for (int i = 0; i < 2; i++)
{
Q[i] = (point)Marshal.PtrToStructure(new IntPtr(Qptr.ToInt32() + (i * size)), typeof(point));
}
Mais après avoir obtenu le tableau de la valeur de chaque élément de structure est devenue null.What j'ai fait tort sur ce point, S'il vous plaît quelqu'un me suggérer ......
je l'ai mentionné la structure créée en C# detaily au dessous de.
public unsafe struct point
{
public Poly* pol;
public NL_DEGREE p;
public vECTOR* knt;
}
où le poly
public unsafe struct Poly
{
public Int32 n;
public cpoint* Pw;
}
Coint est également une structure
public struct cpoint
{
public double x;
public double y;
public double z;
public double w;
}
où VECTOR
public unsafe struct VECTOR
{
public Int32 m;
public double *U;
}
Merci de répondre, je mets le détail de la structure qui a créé en C# édité en même poste – Shankar