在 Windows 上使用 CUDA、TBB、MKL、VTK 构建 OpenCV

Posted

技术标签:

【中文标题】在 Windows 上使用 CUDA、TBB、MKL、VTK 构建 OpenCV【英文标题】:OpenCV build with CUDA, TBB, MKL, VTK on Windows 【发布时间】:2018-12-14 16:55:50 【问题描述】:

我尝试在启用 Intel TBB、MKL、TBB+MKL、VTK、Qt、Eigen 和 CUDA 的情况下构建 OpenCV。 CMake 构建工作得很好,并且生成了 Visual Studio 解决方案,没有出现错误。

但是在 VS 2017 上构建 OpenCV 时,它失败了。

opencv_cudev_main.obj:错误 LNK2019:函数 DllMain 中引用的未解析外部符号“__declspec(dllimport) bool cv::__termination”(__imp_?__termination@cv@@3_NA)

opencv_cudev400.dll : 致命错误 LNK1120: 1 unresolved externals

以下是有关当前配置的更多详细信息。

CMake (v. 3.13.1) OpenCV 源代码 (v 4.0.0) OpenCV 贡献 (v 4.0.0) Visual Studio 2017(v 15.9.4) CUDA 工具包 (v 10.0) 英特尔 TBB(v 2019 更新 3) 英特尔 MKL(v 2019 更新 3) VTK (v 8.1) Qt (v. 5.12.0) 特征 (v. 3.3.7) 操作系统:Windows 10(内部版本 1809)

我是否忽略了某些东西,或者我必须更改我正在使用的库的版本以便它们与 Opencv 4.0.0 一起使用?

这是我的 CMake 配置字符串

"C:\Libraries\CMake\bin\cmake.exe" -B"%openCVRoot%\build" -H"%openCVRoot%\core-src" -G"Visual Studio 15 2017 Win64" -DBUILD_opencv_world=ON -DWITH_CUDA=ON -DCUDA_FAST_MATH=ON -DWITH_CUBLAS=ON -DWITH_MKL=ON -DMKL_USE_MULTITHREAD=ON -DMKL_WITH_TBB=ON -DWITH_TBB=ON -DINSTALL_TESTS=OFF -DINSTALL_C_EXAMPLES=OFF -DBUILD_EXAMPLES=OFF -DWITH_QT=ON -DWITH_VTK_=ON -DWITH =ON -DBUILD_PERF_TESTS=OFF -DBUILD_DOCS=OFF -DBUILD_JAVA=OFF -DBUILD_opencv_python2=OFF -DBUILD_opencv_python3=OFF -DOPENCV_ENABLE_NONFREE=ON -DOPENCV_EXTRA_MODULES_PATH="%openCVRoot%\contrib-src\modules" -DWITH_EIGEN=ON

【问题讨论】:

"它失败了" ...你得详细说明一下。 您需要指定为构建它而执行的每个步骤。构建 OpenCV 会让人头疼。您执行了哪些步骤? @DanMašek,现已更新。感谢您的提示。 【参考方案1】:

假设您正在尝试从源代码构建:https://github.com/opencv/opencv 您需要检查是否:

PATH 变量设置正确,这意味着您应该让它们指向相应的库。否则,需要在 CMake 中手动指定路径 你有正确的库版本,你可以在这里查看列表https://docs.opencv.org/master/d3/d52/tutorial_windows_install.html以及解释 如果您自己构建库,请注意它们处于正确的模式(调试/发布) 您还应该检查您是否拥有每个库:我没有在您的列表中看到 Eigen 检查您的 cmake 版本(版本 >=3.9.1)

编辑 由于您添加了您遇到的错误,我可能有一个迹象:

类似的问题: https://github.com/opencv/opencv/issues/13208

关于同一问题的初始帖子: https://github.com/opencv/opencv/issues/12865

发布解决方案: https://github.com/opencv/opencv/pull/13209

补丁 #13209 应该已经解决了您的问题。

尝试删除 OpenCV 并下载最新的存储库 检查您的驱动程序是否已更新(针对您的显卡) 考虑使用预建库,如此处第一段所示:https://docs.opencv.org/master/d3/d52/tutorial_windows_install.html

【讨论】:

嗨 Patafikss,刚刚更新了我的问题,提供了更多详细信息。现在打算再试一次。谢谢提示!

以上是关于在 Windows 上使用 CUDA、TBB、MKL、VTK 构建 OpenCV的主要内容,如果未能解决你的问题,请参考以下文章

tbb::concurrent_hash_map 抛出 SIGSEGV

windows 源码编译 opencv-4.5.4 + tbb + ipp + openmp

使用 Anaconda install 在 Windows 上获取 CUDA 和 CUDNN 版本

在 Windows 上安装 CUDA 时出现不兼容错误

如何在 Windows 10 上更新 CUDA 驱动程序 nvidia? [关闭]

Windows10上不同CUDA版本的切换