2010-02-03 53 views
0

我試圖從C#調用一個函數用C雖然C++轉換陣列<Byte> ^數據爲const字節*數據 - C++/CLR

所以基本上C# - > C++ - 「ç

在C#,我有字節[]字節 - 從文件中讀取信息。我將字節數組和大小傳遞給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 BYTE *提供幫助。我意識到我需要使用馬沙拉。是否有一個特定的函數來封送C++中的數組?

任何幫助表示讚賞。

謝謝

回答

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