5

我正在捕获如下视频帧

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;

在我将 * public ref *添加到类定位器之前,它没有给我任何错误。

修复它的任何想法?在切换到 c++-cli 之前它工作正常。

我认为这与一些堆问题有关,堆上的项目可以作为垃圾收集的结果移动。为了向本地方法/函数发送指针,您需要在调用期间“固定”指针,但我不知道如何。

谢谢。

更新:

那解决了它。

pin_ptr<CvCapture*> p;
p = &capture;
cvReleaseCapture( p );  
4

1 回答 1

12

(Adding as answer, thanks to @AlexFarber for the correction)

Have you tried pin_ptr? Something like:

pin_ptr<CvCapture*> pCapture = &capture;
于 2012-07-22T17:06:55.253 回答