2010-02-03 2 views
0

나는 C#을에서 C에서 함수를 호출하려고 ++변환 배열 <Byte>이^데이터 * 데이터 - C++/CLR

그래서 기본적으로 C# C 불구하고 -> C++ -> 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 함수 I *이 CONST 바이트의 바이트 배열을 변환하는 데 도움이 필요

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

이다. 마샬링을 사용해야한다는 것을 알게되었습니다. C++에서 배열을 마샬링하는 특정 함수가 있습니까?

도움을 주시면 감사하겠습니다.

감사

답변

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