使用多线程调试 DLL (/MDd) C 运行时库构建静态 Opencv 库

Posted

技术标签:

【中文标题】使用多线程调试 DLL (/MDd) C 运行时库构建静态 Opencv 库【英文标题】:Build the static Opencv library with multi-threaded debug DLL (/MDd) C runtime library 【发布时间】:2013-11-04 16:34:28 【问题描述】:

我现在正在尝试使用 cmake 构建 opencv,如果我使用以下命令:

cmake -DBUILD_SHARED_LIBS=OFF ..

我可以构建一个静态 OPENCV 库。但是,构建的库静态链接 C 运行时库。在 VC2010 中,它使用多线程调试 (/MTd) 选项。我期望动态链接 C 运行时库,即在 VC2010 中使用 /MDd 选项,那么我该怎么做才能使它成为可能?谢谢。

【问题讨论】:

请问为什么需要部分静态和部分动态? @guneykayim 感谢您的 cmets。我现在正在使用 boost 单元测试框架,而在这个框架内使用动态 C 运行时库是唯一的选择。 【参考方案1】:

在 CMake 命令行中添加 -DBUILD_WITH_STATIC_CRT=OFF

cmake -DBUILD_SHARED_LIBS=OFF -DBUILD_WITH_STATIC_CRT=OFF ..

【讨论】:

以上是关于使用多线程调试 DLL (/MDd) C 运行时库构建静态 Opencv 库的主要内容,如果未能解决你的问题,请参考以下文章

远程线程注入遇到的问题

Visual C++:发布模式的运行时库作为“多线程调试 DLL”

一文带你弄懂Visual Studio:运行时库及MT/MTDMD/MDD

VC 运行时库 /MD/MDd 和 /MT/MTd

VS运行时 /MD/MDd 和 /MT/MTd之间的区别

链接到多线程调试 DLL 库时出现链接错误