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



我尝试在启用英特尔TBB、MKL、TBB+MKL、VTK、Qt、Eigen和CUDA的情况下构建OpenCV。CMake构建运行良好,生成了Visual Studio解决方案,没有出现错误。

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

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

opencv_cudev400.dll:致命错误LNK1120:1个未解析的外部

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

  • CMake(第3.13.1节(
  • OpenCV源(4.0.0版(
  • OpenCV Contrib(4.0.0版(
  • Visual Studio 2017(15.9.4版(
  • CUDA工具包(10.0版(
  • 英特尔TBB(2019更新3版(
  • 英特尔MKL(2019更新3版(
  • VTK(8.1版(
  • 问题(第5.12.0节(
  • 特征(第3.3.7节(
  • 操作系统:Windows 10(内部版本1809(

是我忽略了什么,还是我必须更改我正在使用的库的版本,以便它们与Opencv 4.0.0一起使用?

这是我的CMake配置字符串

"C:\Libraries\CMake\bin\CMake.exe"-B"%openCVRoot%\build"-H"%openCVTRoot%\core src"-G"Visual Studio 15 2017 Win64"-DBUILD_opencv_world=ON-DBUILD_CUDA=ON-DCUDA_FAST_MATH=ON-DBUIH_CUBLAS=ON-DBUITH_MKL=ON-DMKL_USE_MULTITHREAD=ON-DMKS_WITHREAD=ON-DMCL_WITH_TWB=ON-DISTALL_TESTS=OFF-DISTALLC_EXAMPLES=OFF-DBUILL_EXAMPLES=OFF-DBUILD_DW ITH_QT=开-DITH_VTK=开-DWITH_OPENGL=开-DBUILD_PERF_TESTS=关-DBUILD_DOCS=OFF-DBUILD_JAVA=OFF-DBUILD_opencv_python2=OFF-DB UILD_opencv_python3=OFF-DOPENCV_ENABLE_NONFREE=ON-DOPENC_EXTRA_MODULES_PATH="%openCVRoot%\contrib src\MODULES"-DWITH_EIGEN=ON

假设您尝试从源代码构建: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

最新更新