2012-05-13 37 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

相关问题