Ich versuche, OpenCV 2.4 wie folgt einzurichten:
C:\OpenCV240
. C:\OpenCV240\build\include
als zusätzliches Include-Verzeichnis hinzugefügt. C:\OpenCV240\build\x86\vc10\staticlib
als zusätzliches Bibliotheksverzeichnis hinzugefügt. 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?
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.
Tags und Links c++ visual-studio-2010 opencv