невозможно преобразовать параметр 1 из «cli ::inner _ptr» в «CvCapture **»

Я захватываю видеокадр следующим образом

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 );  
5
задан fmvpsenior 20 July 2012 в 18:51
поделиться