J'ai une méthode C++ plus qui génère une valeur. J'appelle cette méthode à partir d'une application C#.
La méthode C++ est comme ceci:char * en code managé?
extern "C" REGISTRATION_API char * generate(char dIn[],char dOut[])
La méthode generate
retourne un tableau de caractères (sOut[]=returnvalue; return sOut;
)
Maintenant, je vous appelle cette méthode de mon application C#:
[DllImport("mydll.dll")]
static extern string generate(string sIn, string sOut);
Comme vous pouvez le voir, le type de retour dans C# est string
. Ce qui se passe, c'est que la valeur retournée dans C# n'est pas correcte et qu'elle est corrompue. (La valeur est correcte à l'intérieur de la méthode generate
, mais chaque fois que je l'appelle de C# pour l'extraire, je reçois une valeur erronée.)
Est-il acceptable que ma méthode en C# a une valeur string
de retour alors que dans C++ c'est un char*
? S'il vous plaît partager vos commentaires, il est urgent, merci.
Est-ce que 'char *' représente réellement une chaîne (ANSI/Unicode?) Ou une séquence d'octets? Si une chaîne, utilisez un StringBuilder, sinon un octet [] dans la déclaration 'static extern'. – dtb