我们有一个带有业务逻辑的WinRT组件,可以在内部按摩C ++ unsigned char
缓冲区。我们现在想要从C#byte[]
提供该缓冲区。完美的边界会是什么样的,即,下面SomeWinRTFunction
函数的签名是什么?
void SomeWinRTFunction(something containing bytes from managed land)
{
IVector<unsigned char> something using the bytes given from managed land;
}
这类问题对搜索引擎来说似乎太新了......
答案 0 :(得分:7)
在C ++部分,该方法应该接受uint8的平台数组(相当于C#字节)。
public ref class Class1 sealed
{
public:
Class1();
//readonly array
void TestArray(const Platform::Array<uint8>^ intArray)
{
}
//writeonly array
void TestOutArray(Platform::WriteOnlyArray<uint8>^ intOutArray)
{
}
};
在C#部分传递字节数组:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
Byte[] b = new Byte[2];
b[0] = 1;
var c = new Class1();
c.TestArray(b);
c.TestOutArray(b);
}
答案 1 :(得分:2)
在WinRT中,IVector被投射为IList,我不确定字节 - &gt; unsigned char但我怀疑也是。
C#
byte[] array;
SomeWinRTFunction(array);
C ++
void SomeWinRTFunction(IVector<unsigned char> bytes)
{
IVector<unsigned char> something using the bytes given from managed land;
}
这whitepaper可能会有更多的亮点。