如何将字节数组从托管c++封送到c#

How do I marshal bytes array from managed c++ to c#

本文关键字:c++ 字节 字节数 数组      更新时间:2023-10-16

我想使用C++托管项目中的.Net Graphic功能。我想从内存c++字节数组中创建Windows.Drawing.Image(基于MemoryStream)。

我如何使这段代码工作:

System::IO::Stream^ ms = gcnew System::IO::MemoryStream();
BYTE buf[1024 * 8];  // C++
int size;  // C++
...
ms->Write(&buf, 0, size) 

提前谢谢!

您可以这样做:

int size = 1024;
BYTE buf[1024];
// unmanaged buffer
System::IntPtr intPtr = System::IntPtr( buf );
// managed buffer 
array<unsigned char>^ managedBuf = gcnew array<unsigned char>(size);
{
    // write things to buf[]
}
// copy unmanaged buffer to managed buffer
Marshal::Copy( intPtr, managedBuf, 0, size );
System::IO::Stream^ ms = gcnew System::IO::MemoryStream();
ms->Write( managedBuf, 0, size);