z_san
Messages postés80Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention24 mai 2007
-
27 mars 2006 à 20:09
z_san
Messages postés80Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention24 mai 2007
-
28 mars 2006 à 10:29
Bonjour à tous
Voilà j'ai un ptit soucis avec des pointeurs, voilà je développe une dll en C++ sous vc++ express. Dans cette dll j'ai accés à une structure comme celle ci
typedef public value struct _maStruct
{
char* str1;
char* str2;
int i;
int i2;
}maStruct;
dans mon programme C# j'accéde bien à ma structure et à ces attributs, le soucis est que dans mon code C# le char* est traduit par un sbyte*, la j'avoue que je séche quand à comment remédier à ce problème, que je n'est pas avec le int.
Vous avez une idée sur la nature de mon problème ?
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 27 mars 2006 à 23:02
Quel est le problème !??
Y'a plusieurs façon de convertir la structure en C# ça dépend du contexte, comment elle est utilisée etc..
Donc selon le contexte tu peux très bien garder le type sbyte* pour une chaine ANSI ou char* pour une chaine Unicode, d'ailleurs y'a un constructeur de la classe String qui accepte un pointeur sbyte*.
Toujours selon le contexte tu peux utiliser l'attribut StructLayout :
z_san
Messages postés80Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention24 mai 2007 28 mars 2006 à 08:43
ok
Quand je l'éxécute tout se passe bien, mais quand j'initialise ma structure pour la passer en paramètre dans une fonction qui se trouve elle aussi dans la même dll, sur le pointeur en ajoutant un espion sur la structure pour voir la valeur des champs initialisés le compilateur C# me met :
"Impossible de référencer 'maStruct.str' le pointeur n'est pas valide"
z_san
Messages postés80Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention24 mai 2007 28 mars 2006 à 10:29
C'est bon j'ai réglé le pbroblème en remplaçant mon char * par un String et ça marche trés bien je pense pouvoir faire un tuto dans les prochaines semaine sur la création et l'utilisation d'une dll c++ et son utilisation en c#