无法将参数1从'cli :: interior_ptr <type>'转换为'CvCapture **'</type>

时间:2012-07-20 17:00:02

标签: c++ opencv c++-cli

我正在拍摄视频帧,如下所示

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 );  

1 个答案:

答案 0 :(得分:12)

(添加为答案,感谢@AlexFarber进行更正)

你试过pin_ptr吗?类似的东西:

pin_ptr<CvCapture*> pCapture = &capture;