Comment mettre une Liste chaine d'une dll dans un projet c#

Signaler
Messages postés
10
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
3 septembre 2004
-
Messages postés
95
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
2 juin 2007
-
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 ! ;-)

1 réponse

Messages postés
95
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
2 juin 2007

ta juste a le declarer tes pointeurs dans des blocks unsafe c'est comme ca quon les utilise en c# vu quil sont jugés unsafe ^^ meme si leur temps dacces est bien plus rapide qune string par exemple