8

我正在尝试按如下方式设置 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: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) 已经在 opencv_core240d.lib(matrix .obj)

我究竟做错了什么?

4

1 回答 1

10

听起来您需要在程序中指定针对静态 C 运行时库的链接。

如果 OpenCV 与静态 CRT 链接,而您使用动态 CRT,则会出现这些类型的重新定义错误。

要更改此设置,请打开项目的属性并转到Configuration Properties -> C/C++ -> Code Generation

Runtime Library从更改Multi-threaded Debug DLL (/MDd)Multi-threaded Debug (/MTd)。对您的其他配置执行相同的操作,在适当的情况下使用非调试变体。

于 2012-05-13T11:33:42.057 回答