可以任何正文告诉如何在托管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;
}
Run Code Online (Sandbox Code Playgroud)
提前致谢
我不是一个庞大的C++/CLI程序员,但以下应该可以正常工作.
IntPtr p = GetTheIntPtr();
char* pChar = reinterpret_cast<char*>(p.ToPointer());
Run Code Online (Sandbox Code Playgroud)
IntPtr类有一个名为ToPointer的方法,它将地址作为void*类型返回.这将可以转换为char*C++/CLI.
编辑
验证这适用于VS2008