alors voila j'ai dans un dll un liste chaine du genre
typedef struct attribut
{
struct shobj_att *next;
char *nomcol; /* Colonne de l'attribut */
char *valcol; /* Valeur de l'attribut */
} ATTRIBUT;
typedef struct objet
{
struct shobj_obj *next; /* Objet suivant */
long idl; /* IDL de l'objet */
int numcla; /* Classe de l'objet */
SHOBJ_ATT *lstatt; /* Liste des attributs de l'objet */
} OBJET;
je sais que je dois represente cette structure en c# pour pouvoir l'utiliser (liens
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpref/html/frlrfsystemcollectionsarraylistclasscounttopic.asp) :
[StructLayout(LayoutKind.Sequential)]
public class ATT
{
[MarshalAs(UnmanagedType.LPStruct)]
public SHOBJ_ATT *next;
[MarshalAs(UnmanagedType.LPStr)]
public string nomcol;
[MarshalAs(UnmanagedType.LPStr)]
public string valcol;
}
[StructLayout(LayoutKind.Sequential)]
public class SHOBJ_OBJ
{
[MarshalAs(UnmanagedType.LPStruct)]
public SHOBJ_OBJ *next;
public int idl;
public int numcla;
[MarshalAs(UnmanagedType.LPStruct)]
public SHOBJ_ATT *shobj_att;
}
mais le compilmateur n'aime pas ça !
-> Pointers may only be used in an unsafe context
comment je peux marshaller un pointeur sur une structure ????
Merci pour votre aide ! ;-)