将数组<byte> ^ data转换为const byte * data - C ++ / CLR </byte>

时间:2010-02-03 18:30:18

标签: clr marshalling bytearray

我试图用C#调用C中的函数,但是c ++

所以基本上是C# - &gt; C ++ - &gt; C

在C#中,我有byte []字节 - 从文件中读取信息。我将字节数组和大小传递给C ++。

在C ++中,我得到了字节数组和大小,但我无法转换为特定的数据类型。

void Image::OpenMemFile(array<Byte>^ data, unsigned int size)
{

    Free();
    m_dataStream = data;
    Byte const* streamData = &data[0];   // this is where it throws error 
         // Should I use marshaling here ? What call should that ;be ?
         hImage = ::OpenMemImage(streamData ,&nbsp;size);
    modified = false;
}

// this is the function I&nbsp;need to call 
EXIVSIMPLE_API HIMAGE OpenMemImage(const&nbsp;BYTE *data, unsigned int size)
{
   // code
        imgWrap->image = Exiv2::ImageFactory::open(data, size);

}

需要调用的C函数是

Image::AutoPtr ImageFactory::open(const byte* data, long size)
    {
      /// code
    }

我需要帮助将字节数组转换为const字节*。我意识到我需要使用Marshaling。是否有一个特定的函数来编组C ++中的数组?

感谢任何帮助。

谢谢

1 个答案:

答案 0 :(得分:1)

pin_ptr<unsigned char> pin_buffer = &data[0];
unsigned char* pData = pin_buffer;