我编写了一个托管 C++ 类,它具有以下功能:
void EndPointsMappingWrapper::GetLastError(char* strErrorMessage)
{
strErrorMessage = (char*) Marshal::StringToHGlobalAnsi(_managedObject->GetLastError()).ToPointer();
}
如您所见,这是将最后一个错误的托管字符串复制到非托管世界(char*
)的简单方法。
从我的非托管类中,我调用这样的方法:
char err[1000];
ofer->GetLastError(err);
在托管 C++ 方法处设置断点表明字符串已成功转换为char*
. 但是,一旦我返回非托管类,内容err[1000]
就会丢失,并且再次为空。