Cmake编译pencv报错汇总

所采用的cmake版本3.26.4,下载网址http://www.cmake.org/cmake/resources/software.html

 所编译的opencv3.4.16,内部包含 build 文件夹(已编译好的库,使用 MSVC 的话,经常性报错:所添加的libs路径文件无效或损坏,无法读取 sources 文件夹(源码)

因而我们是围绕sources 文件夹进行编译,编译设置流程可参考博客一:

QT 下使用 opencv with_QT_为什么先生2012的博客-CSDN博客

博客二:

[OpenCV] -- win7下配置OpenCV的Qt开发环境_mvsc qt5.8 opencv_lelexin的博客-CSDN博客

注意需要两篇博客结合着应用,尤其对于新手来说。

应用编译中是有报错的,主要有以下情形:

第一种:参考博客一流程到点击 Configure,设置编译器,此时会报错

CMake编译时出现“error in configuration process project files may be invalid” ,下面小框内提示CMake was unable to find a build program corresponding to MinGW Makefiles“,

解决可参考博客三:

CMake Error: CMake was unable to find a build program corresponding to “MinGW Makefiles“. CMAKE_MAKE_"make error: cmake was unable to find a build prog_有梦想的毛毛虫的博客-CSDN博客

勾选Advanced,对变量:CMAKE_MAKE_PROGRAM 设置value .QT目录下的Tools/mingw530_32/bin/mingw32-make.exe再次点击 Configure即可解除报错,

第二种:

编译时报错

Building RC object modules/core/CMakeFiles/opencv_core.dir/vs_version.rc.obj

'windres' 不是内部或外部命令,也不是可运行的程序

或批处理文件。

参考博客:

https://blog.csdn.net/lizaijinsheng/article/details/120194560?ops_request_misc=&request_id=&biz_id=102&utm_term=%E6%89%A7%E8%A1%8Cmingw32-make%E6%97%B6%EF%BC%8C%E6%8A%A5%E9%94%99%27windres%27%20%E4%B8%8D%E6%98%AF&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-2-120194560.142^v89^control,239^v2^insert_chatgpt&spm=1018.2226.3001.4187

报错原因:执行\build.make:1450: recipe for target modules\core\CMakeFiles\opencv_core.dir\build.make的第1661行出现错误,导致vs_version.rc.obj文件未生成。

解决办法:根据build.make中的错误行,自己修改编译命令,手动生成vs_version.rc.obj,并重新执行mingw32-make命令编译。

先形成该文件的命令行

E:\Qt5.9.9anzhuang\Tools\mingw530_32\bin\windres.exe E:\opencv4.5.2\opencv_build_mingw\modules\core\vs_version.rc –O coff E:\opencv4.5.2\opencv_build_mingw\modules\core\CMakeFiles\opencv_core.dir\vs_version.rc.obj

注意命令行,\modules前路径换成自己的

第三种 编译到44%再次报错

[ 44%] Linking CXX shared library ..\..\bin\libopencv_highgui3416.dll

collect2.exe: error: ld returned 1 exit status

modules\highgui\CMakeFiles\opencv_highgui.dir\build.make:220: recipe for target 'bin/libopencv_highgui3416.dll' failed

mingw32-make[2]: *** [bin/libopencv_highgui3416.dll] Error 1

CMakeFiles\Makefile2:3010: recipe for target 'modules/highgui/CMakeFiles/opencv_highgui.dir/all' failed

mingw32-make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2

Makefile:164: recipe for target 'all' failed

mingw32-make: *** [all] Error 2

参考博客:

https://blog.csdn.net/qq_46284579/article/details/121113910?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_utm_term~default-12-121113910-blog-120657597.235^v38^pc_relevant_anti_t3&spm=1001.2101.3001.4242.7&utm_relevant_index=15

解决方法

在cmake gui中添加条目OPENCV_VS_VERSIONINFO_SKIP = 1,

即点击add entry,在新窗口中name中输入OPENCV_VS_VERSIONINFO_SKIP

                           Value后面打√

再重新Configure,Generate。

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部