J'ai écrit une classe managée C++ qui a la fonction suivante:chaîne à char * marshaling
void EndPointsMappingWrapper::GetLastError(char* strErrorMessage)
{
strErrorMessage = (char*) Marshal::StringToHGlobalAnsi(_managedObject->GetLastError()).ToPointer();
}
Comme vous pouvez le voir, c'est une méthode simple pour copier la chaîne managée de la dernière erreur au monde non géré (char*
).
de ma classe non géré j'appelle la méthode comme ceci:
char err[1000];
ofer->GetLastError(err);
Mettre un point d'arrêt à la méthode géré C++ montre que la chaîne est traduit avec succès dans le char*
. Cependant, une fois que je reviens à la classe non gérée, le contenu de err[1000]
est perdu et il est à nouveau vide.