【问题标题】:How to use the OpenCV 2.4 static libraries with Visual Studio?如何在 Visual Studio 中使用 OpenCV 2.4 静态库?
【发布时间】:2012-05-21 04:23:38
【问题描述】:

我正在尝试按如下方式设置 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)

我做错了什么?

【问题讨论】:

    标签: c++ visual-studio-2010 opencv


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 这样做有副作用还是省钱?
    • 这样做很安全,实际上您需要使用相同版本的 CRT 将所有库链接在一起。然而,决定是使用静态库还是动态库并不总是那么容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多