【问题标题】:pass a string from managed C# to managed C++将字符串从托管 C# 传递到托管 C++
【发布时间】:2010-12-18 06:33:24
【问题描述】:

在 C++ 和 C# 之间传递字符串的首选方法是什么?

我有一个 c++ 类,其中一个函数将char const * const 作为参数。

如何在 C# 中调用此函数?仅使用 c#-string 似乎不起作用,因为 C# 中的函数需要 sbyte*

C++ 类:

public ref class MyClass
{
public:
    void Sample(char const * const Name);
}

错误 2 参数 '1':无法从 'string' 转换为 'sbyte*'

谢谢!

【问题讨论】:

  • 你能展示你的函数原型和给你错误的代码吗?
  • 是的,我已经相应地编辑了我的问题

标签: c# .net c++ string


【解决方案1】:

如果您使用托管 C++,则可以使用 System.String 类

【讨论】:

    【解决方案2】:

    您需要尝试将 C# 中的参数转换为 sbyte。

    Sample((sbyte)nameOfParameter);
    

    这应该可以正常工作。

    【讨论】:

      【解决方案3】:

      IMO 最好的方法是在 C++/CLI 中编写一个包装器,使用 Marshal::StringToHGlobalAnsi 或类似的东西将 System::String^ 转换为 char 指针,然后从 C# 调用该包装器。

      【讨论】:

        猜你喜欢
        • 2013-03-06
        • 1970-01-01
        • 2011-09-15
        • 2017-02-09
        • 1970-01-01
        • 1970-01-01
        • 2017-10-07
        • 2011-09-06
        • 2013-02-09
        相关资源
        最近更新 更多