2012-05-13 67 views
8

我試圖建立OpenCV的2.4如下:如何在Visual Studio中使用OpenCV 2.4靜態庫?

  • 我已經下載並提取預編譯包C:\OpenCV240
  • 在Visual Studio中,我添加了C:\OpenCV240\build\include作爲附加包含目錄。
  • 此外,我添加了C:\OpenCV240\build\x86\vc10\staticlib作爲附加的庫目錄。
  • 而且我已將所有可用的.lib文件指定爲附加依賴項。

當我編譯我的 「Hello World」 程序(使用的DLL時編譯就好了),我得到這樣大量的錯誤信息:

1> msvcprtd.lib(MSVCP100D.dll ):錯誤LNK2005: 「市民:__thiscall的std :: _ Container_base12 ::〜_Container_base12(無效)」(?? 1_Container_base12 @ STD @@ QAE @ XZ)在opencv_core240d.lib已經定義(matrix.obj)

我究竟做錯了什麼?

回答

10

這聽起來像你需要指定鏈接對你的程序中的靜態C運行時庫。

如果OpenCV與靜態CRT鏈接,並且使用動態連接,則會出現這些類型的重新定義錯誤。

要更改此設置,請打開項目的屬性並轉至Configuration Properties -> C/C++ -> Code Generation

更改Runtime LibraryMulti-threaded Debug DLL (/MDd)Multi-threaded Debug (/MTd)。對於其他配置執行相同的操作,在適當的情況下使用非調試版本。

+0

這是否有任何副作用或者是否可以保存? – Niko

+1

這樣做是安全的,事實上,您需要*使用相同版本的CRT將所有庫鏈接在一起。然而,決定是否要使用靜態庫還是動態庫並不總是那麼容易。 – Fraser

相關問題