opencv+opencv_contrib编译之惨痛教训

本人编译的是opencv3.4.1+opencv_contrib3.4.1+vs2017 15.8.0+cuda10.0
流程按照网上的下载cmake_gui那一套
1.

先添加opencv源码的路径和要build的路径
然后点configure
2.
在这里插入图片描述
选择自己的vs版本,本人因为没选win64导致了很多波折
3.
接着开始检测你的vs版本,msvc的版本
如果你在上面勾选了with_cuda,就会检测你的cuda版本
在这里插入图片描述
在这里插入图片描述
如果上面一片红,就要重新点configure,直到变成白色,
一般要勾选BUILD_opencv_world
这样最后在vs配置环境附加的时候只要两个opencv_world341.lib和opencv_world341d.lib就可以了
另外OPENCV_EXTRA_MODULES里写上opencv_contrib里的modules的路径
然后点configure,直到全部变白为止
4.点generate,
完成之后你会发现对应build的路径下面有个opencv.sln 用vs打开
并且右键批生成 勾选ALL_BUILD和INSTALL就可以了
接着就是漫长的等待过程了。一般要两个小时
5.成功之后你会发现build路径下面多了一个INSTALL,
你把里面的bin用环境变量配置好,include,×64这种在vs项目里面配置
你以为能用了**,结果告诉你找不到PDB文件**
如下图
在这里插入图片描述
你要把生成的opencv_world341.dll,opencv_world341d.dll拷贝到system32目录下面才行。

重点来了

不要盲目按照教程就自己的环境进行编译
因为很有可能失败
如下图
在这里插入图片描述
我本来用的是cuda9.0
结果在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include里面有个该死的host_config文件,里面有一行

#if _MSC_VER < 1700 || _MSC_VER >= 1911
#error – unsupported Microsoft Visual Studio version! Only the versions between 2013 and 2017 (inclusive) are supported!

这就导致了我明明用的是vs2017,它说不支持。
因为vs2017也有很多版本的
我用的15.8.0对应的是MSC_VER1915,所以特别冤
想看vs的版本,可以点帮助里面的关于
后来我下了一个cuda10.0才把问题解决了的,刚开始想偷懒把1911改成1920,然并卵
这是一个惨痛的教训。

提醒我们以后要三思而后行,切勿心浮气躁
另外vs2017自带了cmake,效果和cmake_gui是一样的

猜你喜欢

转载自blog.csdn.net/qq_30339595/article/details/83628303
今日推荐