2

我对 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);

但这根本不起作用:)。

4

2 回答 2

9

您是否尝试过使用byte而不是BOOL参考?

void FillBytes(array<System::Byte>^ bytes);
                                ↑
                           //   no ^ here
于 2010-04-12T17:37:47.493 回答
8

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

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

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

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

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

希望它可以帮助某人!

于 2014-02-13T19:03:06.987 回答