cannot convert parameter 1 from 'cli::interior_ptr<Typ>' zu 'CvCapture **'

Ich bin Aufnahme eines video-frame wie folgt

CvCapture *capture = cvCreateFileCapture("PATH");

Lesen kann ich die video-und verarbeiten. Alles funktioniert einwandfrei. Aber wenn ich versuche die Freigabe der capture -

cvReleaseCapture( &capture ); 

Bekomme ich

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

Die Funktion innerhalb einer Klasse.

public ref class Locator

und ich rufe es von den wichtigsten

Locator r;

Bevor ich ihn Hinzugefügt *öffentlichen ref * zu Klasse locator es war nicht, dass Sie mir eventuelle Fehler.

Ideen für die Befestigung? Es war in Ordnung arbeiten, vor dem Wechsel zu c++-cli.

Ich denke, es ist mit einigen heap-problem, Objekte auf den heap verschoben werden können, die als Ergebnis die garbage-collection. Um einen Zeiger auf eine native Methode/Funktion, die Sie brauchen, um "pin" der Mauszeiger für die Dauer des Gesprächs, aber ich weiß nicht, wie.

Dank.

Aktualisiert:

Dass es behoben.

pin_ptr<CvCapture*> p;
p = &capture;
cvReleaseCapture( p );  
  • Müssen Sie rufen Sie Marshal::FreeHGlobal zu reinigen, bis die Zeichenfolge, die StringToHGlobalAnsi erstellt. Finden Sie diese Antwort für Beispiel-code: stackoverflow.com/a/5667246/480937
  • Wie wirkt sich das auf capture?
  • Ich bearbeitet die Frage, denn auch wenn ich ihm den Pfad direkt ein, es gibt mir immer noch den gleichen Fehler
  • Es hat keinen Einfluss auf Aufnahme, so dass ich nicht geben Sie es als eine Antwort, aber es ist ein Speicher-Leck, das wirkt sich auf Ihr Programm.
  • Ok, danke. Ich reparier das Leck.
  • Haben Sie versucht, pin_ptr? So etwas wie pin_ptr<CvCapture> pCapture = &capture
  • pin_ptr sieht aus wie die richtige Lösung, ich denke, es sollte pin_ptr<CvCapture*>
  • Dass es behoben. Danke. Aber ich wünschte, ich sah Ihre Antwort, bevor Sie dazu führen, dass ich fixiert auf meine eigene, aber danke.
  • Ja, Sie sind richtig, die pin_ptr<CvCapture*> erforderlich ist.
  • es scheint, dass Sie sollten hinzufügen, dass der Tipp als eine Antwort.

InformationsquelleAutor fmvpsenior | 2012-07-20
Schreibe einen Kommentar