从托管的C#传递字符串到托管的C++

3

什么是在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*'

谢谢!


你能展示一下你的函数原型和出现错误的代码吗? - Frank Bollack
是的,我已经相应地编辑了我的问题。 - clamp
3个回答

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

1

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

Sample((sbyte)nameOfParameter);

那应该就可以正常工作了。


1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接