将数组参数从C#传递到C++/CLI方法

将数组参数从C#传递到C++/CLI方法,c#,c++-cli,parameter-passing,C#,C++ Cli,Parameter Passing,我对C++/CLI知之甚少,但我有一个简单的问题需要解决。我有一个C++/CLI类方法,它将字节数组作为参数。该数组具有预先确定的长度,并且可以预先在C#中进行分配。该数组应该通过C++/CLI方法填充数据 如何声明该方法,然后从C#调用它 我在我的C++/CLI类中尝试了以下方法: public ref class C { public: void FillBytes(array<BYTE^>^ bytes); }; 但是那根本不起作用:)。你试过用byte代替BOOL引

我对C++/CLI知之甚少,但我有一个简单的问题需要解决。我有一个C++/CLI类方法,它将字节数组作为参数。该数组具有预先确定的长度,并且可以预先在C#中进行分配。该数组应该通过C++/CLI方法填充数据

如何声明该方法,然后从C#调用它

我在我的C++/CLI类中尝试了以下方法:

public ref class C
{
public:
    void FillBytes(array<BYTE^>^ bytes);
};

但是那根本不起作用:)。

你试过用
byte
代替
BOOL
引用吗

void FillBytes(array<System::Byte>^ bytes);
                                ↑
                           //   no ^ here
void FillBytes(数组^bytes);
↑
//不,在这里

我知道这个问题很久以前就被问到了,但希望它能帮助其他正在查看此帖子的人。您需要从C++/CLI发送以下内容:

void FillBytes(array<unsigned char>^% bytes);

希望它能帮助别人

哎呀,我只是输入了一些简化版的实际代码,然后打错了。但问题依然存在。我得到了“参数“1”:在尝试编译上述代码时,无法从“byte[]”转换为“System.ValueType[]”。当我编写
array^
而不是
array^
时,我首先输入了一个错误。对于动态数组,您将如何更改它?
void FillBytes(array<unsigned char>^% bytes);
o = new C();
var bytes = new byte[3];
o.FillBytes(ref bytes);