我正在拍摄视频帧,如下所示
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 );
答案 0 :(得分:12)
(添加为答案,感谢@AlexFarber进行更正)
你试过pin_ptr吗?类似的东西:
pin_ptr<CvCapture*> pCapture = &capture;