ZaRMaS
Messages postés17Date d'inscriptionsamedi 13 septembre 2003StatutMembreDernière intervention30 octobre 2006
-
14 juin 2006 à 14:36
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 2012
-
15 juin 2006 à 00:51
Salut a tous,
J ai un petit probleme avec ma dll code en C. Elle retourne un char *
et je cherche a recuperer en csharp le retour de cette fonction. Voici
ma declaration
[DllImport("myDll.dll")]
public static extern unsafe
string myFunction([MarshalAs(UnmanagedType.LPArray)] byte[] myData, int
width, int height);
Donc elle prend en parametre un tableau de byte et cela ne pose aucun probleme;
Voici la fonction code en C :
char *myFunction(char *myData, int Arg_width, int Arg_height)
Ce qui me parait etrange et qui explique pk je psote du code en C c est
que ca marche des fois et d autre "non" comme si j avais rate un
malloc. APres avoir bien verifie je trouve rien de suspect et donc jeme
suis dit que cela pouvait venir du cast entre le string et le char *.
Si quelqu un a quelques idees pour m expliquer ce qui pourrait ne pas
aller je suis preneur
tu passes un tableau et tu le reçois en tant que pointeur char* dans ton code C. Mais la question que je me pose, il est ou le caractère null '\0' dans ta chaine myData !?
En ce qui concerne le retour de chaine par pointeur char* j'ai vu que Microsoft utilisait CoTaskMemAlloc :