c++-cli - 如何将 System::IntPtr 转换为 char*

任何人都可以告诉如何在托管 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/

相关文章:

php - 如何在 PHP 中 3 秒内切换到另一个页面?

.htaccess - 需要 mod_rewrite URL 信息

visual-c++ - SetWindowPos() 函数不移动窗口?

sql - 在 SQL 中选择多个字段的最大值的最佳方法是什么?

delphi - "Long running method is done"有设计模式吗?

vb.net - 如何清除datagridview中的所有数据且不影响删除数据

ms-access - MS Access 交叉表查询参数

php - 我将如何扫描目录以使用 php 链接到 pdf?

php - 当前文档的 PHP 中的最后更新日期

vb.net - 将参数用于 Oracle ODBC 连接