Im utilisant P/invoke sur une fonction dll non managée swe_get_planet_name() en C#. La définition de fonction donnée est,pInvoke C# Problème d'importation DLL
char* swe_get_planet_name(int ipl, char *spname);
Cela signifie que la valeur de retour est affecté à char * spname? Il semble que ce soit à partir de l'exemple de code dans la documentation.
char snam[40];
/*
* get the name of the planet p
*/
swe_get_planet_name(p, snam);
/*
* print
*/
printf(snam);
Donc, mon code C# est
[DllImport("swedll32.dll")]
private static extern void swe_get_planet_name(int ipl, char[] spname);
char[] name = new char[40];
int p = 3;
swe_get_planet_name(p, name);
Cette exécute sans erreur, mais 'nom' variable est attribué un sens '\ 0' dans chaque élément au lieu du nom de la planète que c'est censé revenir. Rien de mal avec la DLL puisque l'application d'exemple fourni par le fournisseur fonctionne correctement. Des idées?
Avez-vous essayé de passer dans un pointeur sur un tableau d'octets plutôt que sur char []? Ce sera organisé différemment, je crois. –