将托管C#中的字符串传递给托管C ++

时间:2009-11-19 11:30:21

标签: c# .net c++ string

在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 *'

谢谢!

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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

Sample((sbyte)nameOfParameter);

那应该可以正常工作。

答案 2 :(得分:1)

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