У меня есть родное приложение C ++, которое должно вызывать библиотеку C #.Изучив различные варианты, я решил добавить библиотеку C ++ / CLI в качестве оболочки для обработки прямого интерфейса между ними.У меня ОЧЕНЬ большой массив, который я передаю из C ++ в C # (настолько большой, что о создании копии через Marshal :: Copy не может быть и речи).Мне не удалось определить синтаксис.
Объявление функции C #:
void Computation::passInVolume(int size, short volume[])
Функция C ++ / CLI:
void Wrapper::passInVolume(int size, short volume[])
{
//this call succeeds, but does not contain my data
array<short>^ locArray = gcnew array<short>(size);
// This line produces: error C2440: 'type cast' : cannot convert from
// 'short []' to 'cli::array<Type> ^'
array<short>^ locArray2 = (array<short>^)volume;
// call requires array<short>^ as input type
Computation::passInVolume(size, locArray);
}
Код C ++:
volImage = (short*)malloc(size*sizeof(short));
...
wrapper->passInVolume(size, volImage);
Есть ли способ разыграть это, что мне просто не хватает?Я успешно делал это другим способом, вызывая C ++ из C #, в прошлом без каких-либо проблем (или даже приведения).