Я захватываю видеокадр следующим образом
CvCapture *capture = cvCreateFileCapture("PATH");
Я могу прочитать видео и обработать его. Все работает нормально. Но когда я пытаюсь освободить захват
cvReleaseCapture( &capture );
я получаю
error C2664: 'cvReleaseCapture' : cannot convert parameter 1 from
'cli::interior_ptr<Type>' to 'CvCapture **'
with
[
Type=CvCapture *
]
Cannot convert a managed type to an unmanaged type
Функция находится внутри класса.
public ref class Locator
и я звоню с главного
локатор r;
Прежде чем я добавил это*общедоступная ссылка*к локатору класса это не давало мне никаких ошибок.
Есть идеи по исправлению? До перехода на С++ -cli он работал нормально.
Я думаю, что это связано с какой-то проблемой с кучей, элементы в куче могут быть перемещены в результате сборки мусора. Чтобы отправить указатель на нативный метод/функцию, нужно «закрепить» указатель на время вызова, но я не знаю, как это сделать.
Спасибо.
Обновлено:
Это исправило это.
pin_ptr<CvCapture*> p;
p = &capture;
cvReleaseCapture( p );