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

时间:2010-04-12 17:33:43

标签: 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);
};

然后,在C#中:

o = new C();
var bytes = new byte[3];
o.FillBytes(bytes);

但这根本不起作用:)。

2 个答案:

答案 0 :(得分:9)

您是否尝试过使用byte代替BOOL引用?

void FillBytes(array<System::Byte>^ bytes);
                                ↑
                           //   no ^ here

答案 1 :(得分:7)

我知道很久以前就问过这个问题,但希望能帮助正在查看这篇文章的其他人。从C ++ / CLI您需要发送:

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

“hat”表示它是CLR类型,%表示您将通过引用传递它,以便C ++ / CLI填充数组。

然后你可以像这样用C#调用它:

o = new C();
var bytes = new byte[3];
o.FillBytes(ref bytes);

希望它有所帮助!