任何人都可以告诉如何在托管 C++ 中将 System::IntPtr 转换为 char* 这是我的主要功能
int main(void)
{
String* strMessage = "Hello world";
CManagedClass* pCManagedClass = new CManagedClass();//working
pCManagedClass->ShowMessage(strMessage);//working
****above said error here***
char* szMessage = (char*)Marshal::StringToHGlobalAnsi(strMessage);
CUnmanagedClass cUnmanagedClass; cUnmanagedClass.ShowMessageBox(szMessage);
Marshal::FreeHGlobal((int)szMessage);
return 0;
}
提前致谢
最佳答案
我不是一个大 C++/CLI 程序员,但下面的代码应该可以正常工作。
IntPtr p = GetTheIntPtr();
char* pChar = reinterpret_cast<char*>(p.ToPointer());
IntPtr 类有一个名为 ToPointer 的方法,它以 void*
类型返回地址。这将在 C++/CLI 中转换为 char*
。
编辑
已验证这适用于 VS2008 和 VS2015
https://stackoverflow.com/questions/810354/