1
我有一个C#array<System::Byte>
,我希望将其转换为C++ byte*
。我怎样才能做到这一点?我使用的是C++/CLR,因为它允许我在同一个项目中使用托管/非托管代码。我基本上是编写一个DLL并制作一些可以通过C#调用的方法,但是它包含非托管的C++代码。C#字节数组和C++字节数组之间的元帅
因此,基本上,我的C++/CLR方法头是这样的:
void testMethod(array<Byte>^ bytesFromCSharp);
和testMethod
我想的bytesFromCSharp
翻译成可由其他非托管C++代码中使用的byte*
的内部。我编写了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);
...
}