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

fmv*_*ior 5 c++ opencv c++-cli

我按如下方式捕获视频帧

CvCapture *capture = cvCreateFileCapture("PATH");
Run Code Online (Sandbox Code Playgroud)

我可以阅读视频并进行处理.一切正常.但是当我尝试释放捕获时

cvReleaseCapture( &capture ); 
Run Code Online (Sandbox Code Playgroud)

我明白了

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
Run Code Online (Sandbox Code Playgroud)

该函数在一个类中.

public ref class Locator
Run Code Online (Sandbox Code Playgroud)

我从主要的那个叫它

定位器r;

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

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

我认为它与一些堆问题有关,堆上的项可以由于垃圾收集而移动.为了发送指向本机方法/函数的指针,您需要在调用期间"固定"指针,但我不知道如何.

谢谢.

更新:

修好了.

pin_ptr<CvCapture*> p;
p = &capture;
cvReleaseCapture( p );  
Run Code Online (Sandbox Code Playgroud)

Chr*_*s O 12

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

你试过pin_ptr吗?就像是:

pin_ptr<CvCapture*> pCapture = &capture;
Run Code Online (Sandbox Code Playgroud)