在用cmake编译opencv3.4.1出现了不少错误,用的编译器是mingw,报过几种错误,现将其整理如下:
配置Qt与opencv可以参考官方文档: qt with opencv.
1. 官方文档中提到的取消勾选ENABLE_PRECOMPILED_HEADERS和报错信息:
'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA' was not declared in this scope ,在 #include "DShow.h" 之前添加#define NO_DSHOW_STRSAFE;
2.网上提到的error: base class 'struct IUnknown' has accessible non-virtual destructor [-Werror=non-virtual-dtor]
到sources目录下搜索OpenCVCompilerOptions.cmake,将里面的add_extra_compiler_option(-Werror=non-virtual-dtor注释掉
如果你尝试了各种方法均无果,那么请直接从这开始:
在编译二进制文件的路径下进行mingw32-make报错,采用的解决办法是,直接下载opencv3.4的sources压缩包,之前都是下载opencv-3.4.0-vc14_vc15这种格式的可执行文件进行提取,vc编译器和mingw32还是有一定的差异的,尝试各种解决办法都是到42%,48%,72%报错失败,直接在cmake中填上sources解压好的文件路径,以及一个build-opencv路径,和官网提示的类似,记住该路径即可,至于编译器选择gcc和g++前面的官方文档已详细介绍,值得注意的是这样编译还是会在48%左右报错,但解决办法就是官网提供的两个,将ENABLE_PRECOMPILED_HEADERS取