将参数从托管c#传递到托管c++

本文关键字:c++ 参数 | 更新日期: 2023-09-27 18:13:55

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

当我在c#中调用这样的函数时,函数接受参数类型为sbyte*。仅仅使用c#字符串似乎不起作用,因为c#中的函数需要sbyte*和sbyte**

c++类:

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

c#调用…

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

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

所以我需要帮助理解我如何能传递字符串参数从托管c#到托管c++ ?

将参数从托管c#传递到托管c++

char *[]与c#字符串不同。在托管c++中,你想要一个String^,像这样

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