Я написал управляемый класс C ++, который имеет следующую функцию:
void EndPointsMappingWrapper::GetLastError(char* strErrorMessage)
{
strErrorMessage = (char*) Marshal::StringToHGlobalAnsi(_managedObject->GetLastError()).ToPointer();
}
Как видите, это простой способ скопировать управляемую строку последней ошибки в неуправляемый мир (char*
).
Из моего неуправляемого класса я вызываю метод следующим образом:
char err[1000];
ofer->GetLastError(err);
Помещение точки останова в управляемый метод C ++ показывает, что строка успешно переведена в char*
. Однако, как только я возвращаюсь в неуправляемый класс, содержимое err[1000]
теряется и снова пусто.