ZaRMaS
Messages postés17Date d'inscriptionsamedi 13 septembre 2003StatutMembreDernière intervention30 octobre 2006
-
12 juin 2006 à 12:45
ZaRMaS
Messages postés17Date d'inscriptionsamedi 13 septembre 2003StatutMembreDernière intervention30 octobre 2006
-
12 juin 2006 à 13:56
Salut,
J ai besoin d une petite aide. En csharp, je recupere un tableau de byte declarer ainsi :
byte []saveArray
Ce tableau doit etre passe en parametre a une dll developpe en C qui prend en parametre un char *
Dll en C :
void HelloWorld(char *test)
{
printf("Text %s\n", test);
}
Program en C#
[DllImport("myDlltest.dll")]
public static extern unsafe void HelloWorld (char *test);
dgouttegattat
Messages postés129Date d'inscriptionmardi 22 novembre 2005StatutMembreDernière intervention30 décembre 20073 12 juin 2006 à 13:07
Salut,
Dans la déclaration de ta méthode externe, il faut indiquer au framework comment il doit passer le paramètre, grâce à un attribut System.Runtime.InteropServices.MarshalAs :
<hr />[DllImport("myDlltest.dll")]
public static extern void HelloWorld(
[MarshalAs(UnmanagedType.LPArray)] byte[] test);
<hr />
Ici, la valeur LPArray indique que le paramètre test doit être passé comme un pointeur vers le premier élément du tableau, donc sauf erreur, ça devrait correspondre au prototype de ta fonction C ("char *").