S'il vous plaît aider,Appeler un C++ méthode qui renvoie une chaîne, de C#
my c++ function:
extern "C" REGISTRATION_API void calculate(char* msg)
{
//some calculation here
msg = "some text";
}
mon C# appel:
[DllImport("thecpp.dll")]
static extern void calculate(StringBuilder sMsg);
private void button4_Click(object sender, EventArgs e)
{
StringBuilder msg = new StringBuilder();
calculate(msg);
MessageBox.Show(msg.ToString());
}
Peu importe ce que je mets dans msg, le stringbuilder est toujours vide? Pourquoi? Qu'est-ce qui ne va pas? des idées? S'il vous plaît partager
Votre fonction C++ est une fuite de mémoire. – SLaks
Dans votre code C, vous affectez une valeur au pointeur 'msg' lui-même, pas à la mémoire pointée vers. Je ne sais pas comment réparer ce w.r.t. marshalling, mais je jette juste ici parce que deux réponses semblent l'avoir déjà manqué. – Thomas
@SLaks: Ce n'est pas une fuite de mémoire, mais j'avoue qu'il est effrayant d'assigner une chaîne de caractères à un pointeur sur un non-const 'char'. – Thomas