将托管C#中的参数传递给托管C ++

时间:2013-05-16 06:59:06

标签: c# c++-cli

在C ++和C#之间传递字符串的首选方法是什么? 我有一个c ++类,其中一个函数以const char var1 and const char var2[]为参数。

当我在C#中调用这样的函数时,函数接受参数类型为sbyte *。 只是使用c#-string似乎不起作用,因为C#中的函数需要一个sbyte *和sbyte **

C ++类:

public ref class MyClass
{
public:
    void Sample(const char * var1,const char* Var2[]);
}

C#call ...

class Program
    {
        static void Main(string[] args)
        {
               MyClass oClass = new MyClass();
               string var1 = "Variable1";
               string[] var2 = {"1","2"};
               oClass.Sample(var1,var2);
        }
}

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

所以我需要帮助来理解如何将托管C#中的字符串参数传递给托管C ++?

1 个答案:

答案 0 :(得分:2)

char * []与C#字符串不同。在托管C ++中,您需要一个String ^,就像这样

public ref class MyClass
{
public:
    void Sample(String^ var1, array<String^>^ var2);
};