【问题标题】:How to build opencv and boost both in visual studio 2013? /MTd? /MDd?如何在 Visual Studio 2013 中构建 opencv 和 boost? /MTd? /MDd?
【发布时间】:2015-02-12 18:11:20
【问题描述】:

我在 Windows 7 中将 boost 库和 openCV 与 Visual Studio 2013 一起使用。

当我构建它们时,有很多这样的错误。

opencv_core2410d.lib(alloc.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in structure.obj

所以,我搜索了这个错误,并将项目属性的运行时库从 /MDd 更改为 /MTd

之后,这些错误就消失了。但是,还有其他类似的错误。

libboost_system-vc120-mt-gd-1_57.lib(error_code.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MTd_StaticDebug' in structure.obj

我以前也建过这样的 boost 库。

 b2 toolset=msvc-12.0 variant=debug,release link=static threading=multi address-model=32 runtime-link=static

我构建 runtime-link static(/MTd) 对。 我不知道为什么我不能用 /MTd 选项编译 boost。 我该怎么办?

【问题讨论】:

  • 嗯..我可以拆分这个问题。但是当我搜索两个单独的问题时,一个问题的答案是更改为 /MTd 而另一个问题的答案是更改为 /MDd .. 同时使用两个库时我想要一些解决方案。

标签: opencv visual-studio-2012 boost microsoft-runtime-library


【解决方案1】:

如果您使用的是 CMake,您可以将以下行添加到您的 CMakeLists.txt

set(OpenCV_STATIC OFF)

原来如此

set(OpenCV_STATIC OFF)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})

之后,您需要将 OpenCV dll 添加到路径中。例如:

PATH_TO_OpenCV\build\x64\vc12\bin

之后它应该可以使用 /MDd 工作。

在 Qt 中使用 OpenCV 时我遇到了同样的问题,这有助于我入门: https://github.com/nickdademo/qt-opencv-multithreaded

【讨论】:

    猜你喜欢
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多