【发布时间】:2023-03-03 20:07:01
【问题描述】:
我需要使用 C++/CLI(数组)将本机(即非托管)数据(字节*)复制到托管字节数组。
我试过 Marshal::Copy (数据由 const void* 数据指向,是 dataSize 字节)
array<byte>^ _Data=gcnew array<byte>(dataSize);
System::Runtime::InteropServices::Marshal::Copy((byte*)data, _Data, 0, dataSize);
这给出了错误 C2665:16 个重载中没有一个可以转换所有参数。然后我尝试了
System::Runtime::InteropServices::Marshal::Copy(new IntPtr(data), _Data, 0, dataSize);
产生错误 C2664:参数 1 无法从“const void*”转换为“__w64 int”。
那么如何做到这一点,Marshal::Copy 确实是“最好”(最简单/最快)的方法吗?
【问题讨论】:
-
顺便说一句-“系统::运行时::InteropServices::Marshal::Copy((IntPtr)data, _Data, 0, dataSize);"给出错误 C2440 - 无法将“const void*”转换为“System::IntPtr”
标签: c++-cli