我有一个C# array<System::Byte>
和我想,要转换为一个C ++ byte*
。 我怎样才能做到这一点? 我使用C ++ / CLR,因为它让我用托管/非托管代码在同一个项目。 我基本上写一个DLL,并做了一些方法,可以通过C#调用,但包含非托管C ++代码。
所以基本上,我的C ++ / CLR方法的标题是这样的:
void testMethod(array<Byte>^ bytesFromCSharp);
和的内部testMethod
我想的翻译bytesFromCSharp
成byte*
可以由其它非托管C ++代码中使用。 我malloced的byte*
阵列写了for循环的字节复制字节,但感觉应该有一个更好的解决方案。
编辑:汉斯从下面他的回答技巧的例子:
//C#
byte[] myBytes = {1,2,3,4};
//C++/CLI
void testMethod(array<byte>^ myBytes) {
pin_ptr<byte> thePtr = &myBytes[0];
byte* bPtr = thePtr;
nativeCode(bPtr);
...
}