C++ cli 如何转换(托管到非托管)数组<;系统::字节^>;到字节*?

C++ cli 如何转换(托管到非托管)数组<;系统::字节^>;到字节*?,c++-cli,C++ Cli,我需要帮助进行这种转换: byte* bytes = Battle::Storm::GetBytes(0); 现在我得到一个错误: 错误3错误C2440:“正在初始化”:无法从“cli::array^”转换为“byte*” 如何执行此操作?您可以使用pin_ptr获取非托管阵列 array<Byte>^ arr = gcnew array<Byte>(100) ; pin_ptr<unsigned char> pUnmanagedArr = &ar

我需要帮助进行这种转换:

byte* bytes = Battle::Storm::GetBytes(0);
现在我得到一个错误:

错误3错误C2440:“正在初始化”:无法从“cli::array^”转换为“byte*”

如何执行此操作?

您可以使用pin_ptr获取非托管阵列

array<Byte>^ arr =  gcnew array<Byte>(100) ;
pin_ptr<unsigned char> pUnmanagedArr = &arr[0];
array^arr=gc新数组(100);
pin_ptr pUnmanagedArr=&arr[0];

从错误消息中,我了解到
Battle::Storm::GetBytes(0)
返回多维数组,其形式为
cli::array^

要将其转换为本机
无符号字符*

array<Byte,N> ^ byteMultiArray = Battle::Storm::GetBytes(0);
pin_ptr<unsigned char> array_pin = &byteArray[0, ... ,Nth 0]; 
unsigned char * nativeArray = array_pin;
array^bytemultirray=Battle::Storm::GetBytes(0);
pin_ptr数组_pin=&byteArray[0,…,Nth 0];
无符号字符*nativeArray=数组_pin;
这里的数字N是数组的维数

//for N = 2  
pin_ptr<unsigned char> array_pin = &byteArray[0,0];
//for N = 4  
pin_ptr<unsigned char> array_pin = &byteArray[0,0,0,0];
//对于N=2
pin_ptr数组_pin=&byteArray[0,0];
//对于N=4
pin_ptr数组_pin=&byteArray[0,0,0,0];

您想将其转换为本机
字节(无符号字符)
指针还是管理字节数组,即
数组^
?我想将其转换为本机字节或字符*更正确的是:数组^arr=Battle::Storm::GetBytes(0);但我得到了错误:错误3错误C2440:“初始化”:无法从“cli::array^”转换为“cli::array^”,下一行:错误4错误C2440:“初始化”:无法从“cli::interior_ptr”转换为“cli::pin_ptr”@nCdy:
Battle::Storm::GetBytes(0)
的确切返回类型是什么?答案是正确使用的字节,不是字节。@nCdy:是的,它是字节数组,但是多维数组。维度是什么?@nCdy:因为现在维度5肯定错了。请阅读
Battle::Storm::GetBytes()
的手册,或查看源代码。使用n1,它可以工作:)谢谢,我对C++CLI语法感到非常困惑。