如何将System :: IntPtr转换为char*

Cut*_*ute 1 c++-cli

可以任何正文告诉如何在托管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)

提前致谢

Jar*_*Par 8

我不是一个庞大的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