Wie benutzt man die OpenCV 2.4 statischen Bibliotheken mit Visual Studio?

8

Ich versuche, OpenCV 2.4 wie folgt einzurichten:

  • Ich habe das vorkompilierte Paket heruntergeladen und extrahiert nach C:\OpenCV240 .
  • In Visual Studio habe ich C:\OpenCV240\build\include als zusätzliches Include-Verzeichnis hinzugefügt.
  • Außerdem habe ich C:\OpenCV240\build\x86\vc10\staticlib als zusätzliches Bibliotheksverzeichnis hinzugefügt.
  • Und ich habe alle verfügbaren .lib-Dateien als zusätzliche Abhängigkeiten angegeben.

Wenn ich mein Programm "Hello World" kompiliere (das sich bei Verwendung der DLLs gut kompiliert), bekomme ich viele Fehlermeldungen wie folgt:

  

1 & msgcprtd.lib (MSVCP100D.dll): Fehler LNK2005: "public: __thiscall std :: _ Container_base12 :: ~ _Container_base12 (void)" (?? 1_Container_base12 @ std @@ QAE @ XZ) bereits in opencv_core240d definiert. lib (matrix.obj)

Was mache ich falsch?

    
Niko 13.05.2012, 09:08
quelle

1 Antwort

10

Es scheint, als müssten Sie die Verknüpfung mit der statischen C-Laufzeitbibliothek in Ihrem Programm angeben.

Wenn OpenCV mit der statischen CRT verbunden ist und Sie die dynamische verwenden, erhalten Sie diese Art von Neudefinitionsfehlern.

Um diese Einstellung zu ändern, öffnen Sie die Eigenschaften Ihres Projekts und gehen Sie zu Configuration Properties -> C/C++ -> Code Generation .

Ändern Sie Runtime Library von Multi-threaded Debug DLL (/MDd) in Multi-threaded Debug (/MTd) . Führen Sie das gleiche für Ihre anderen Konfigurationen durch und verwenden Sie gegebenenfalls die Nicht-Debug-Variante.

    
Fraser 13.05.2012, 11:33
quelle

Tags und Links