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

kikoff Messages postés 10 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 3 septembre 2004 - 4 août 2004 à 16:41
cs_ousta Messages postés 95 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 2 juin 2007 - 4 août 2004 à 18:04
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

cs_ousta Messages postés 95 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 2 juin 2007
4 août 2004 à 18:04
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
0
Rejoignez-nous