【发布时间】:2013-07-17 00:27:12
【问题描述】:
我有一个 C# array<System::Byte>,我希望将其转换为 C++ byte*。我怎样才能做到这一点?我正在使用 C++/CLR,因为它允许我在同一个项目中使用托管/非托管代码。我基本上是在编写一个 DLL 并制作一些可以通过 C# 调用的方法,但它们包含非托管 C++ 代码。
所以基本上,我的 C++/CLR 方法头是这样的:
void testMethod(array<Byte>^ bytesFromCSharp);
在testMethod 内部,我想将bytesFromCSharp 翻译成byte*,其他非托管C++ 代码可以使用它。我分配了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);
...
}
【问题讨论】: