Я пытаюсь вызвать функцию в C из C #, хотя c ++
так в основном C # -> 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 , size);
modified = false;
}
// this is the function I need to call
EXIVSIMPLE_API HIMAGE OpenMemImage(const BYTE *data, unsigned int size)
{
// code
imgWrap->image = Exiv2::ImageFactory::open(data, size);
}
функция C, которую нужно вызвать, это
Image::AutoPtr ImageFactory::open(const byte* data, long size)
{
/// code
}
Мне нужно помочь в преобразовании байтового массива в константный байт *. Я понимаю, что мне нужно использовать Marshaling. Есть ли конкретная функция для маршальных массивов в C ++?
Любая помощь приветствуется.
Спасибо