WIN10+CMAKE+MinGW+Opencv/C++ 和VScode开发环境搭建

搞了一个星期才搞好,太磨人了,记录一下,也希望能帮助其他小伙伴。首先贴出我参考的博主,小伙伴可以同时打开我和几个博主的页面,综合一下,进行配置环境。

(1)我采用的和这个博主类似,同时遇到和博主一样的问题。
https://blog.csdn.net/m0_61133217/article/details/127980607

(2)视频链接
https://www.bilibili.com/video/BV1vv41137Hu/?spm_id_from=333.337.search-card.all.click&vd_source=2e33085512e31cc1becd7895aabcebe8

便是按照这个视频步骤进行的,在进行到3分20秒后作者不没有进行详细的操作,省略掉的步骤参考这个博主的文章https://blog.csdn.net/scott198510/article/details/125843447(我大体框架参考这边博文)中的这一段,如下所示。

补充:首先,我建议按照视频博主讲的,下载opencv的两个文件,前3分钟我就不补充了,视频博主讲的很细致。补充3分钟之后的。

首先第一个坑就是添加Path这一步:一定要反斜杠,千万不要复制直接粘贴过去,否则会像我一样报错误:cmake_gui中出现:error in configuration process, project files may be invalid

正确写法:

接着就是视频博主说的添加path后,进行勾选world,configure,等到红色全没有之后,点击generate。

第二个坑:

但是在configure之后,会有一些红色的报错,也就是ffmpeg下载不下来,需要下载两个文件:

红色报错:

需要下载的文件:我已上传资源。

下载之后保存的位置:

说明一下,我是跟着视频博主,操作minGW32-make install 过程中在上面的路径放的两个dll文件,并没有重新进行config和generate。

然而规避了这个我依然遇到了一个问题,在编译的过程中关于mutex的报错,让我一头雾水。

error: 'mutex' in namespace 'std' does not name a type

error: 'Mutex' does not name a type; did you mean 'putenv'?

error: class 'IlmThread_opencv::Lock' does not have any field named '_mutex'

原因分析:

在mingw构建工具链的"线程模型:win32"中不支持互斥。您必须选择任何具有"线程模型:posix"的工具链。选择 -posix的免安装包作为编译器。

排查问题:首先cmd,输入gcc -v

发现线程模型是win32,是导致mutex报错的原因。需要现在posix版本。

下载链接:

软件下载链接:
https://sourceforge.net/projects/mingw-w64/files/Toolchains targetting Win64/Personal Builds/mingw-builds/8.1.0/threads-posix/seh/

这个解压放置一个位置之后,不需要安装,只需要添加环境变量。同时将原来的minGW环境变量删除。然后再次cmd,输入gcc-v,此时线程就变成posix了。

后面编译就成功了。可以重启一下电脑。

接下来是在vscode的应用opencv环境。但是这个又消耗了一下午,问题是找不到头文件。看博主说的还是一头雾水,详细的我就不说了,我只说该添加哪些东西。

1、cpp_properties.json

2、lunch.json

3、task.json,箭头指的特别重要,必须添加,它是找不到头文件的源头

4、非常重要!!!

点击左下角的设置,选设置,搜索code runner,找到箭头指的地方,点击进去

其中需要修改的地方: "cpp": "cd dir \&\& g++ fileName -o fileNameWithoutExt -I D:/opencv/build/install/include -I D:/opencv/build/install/include/opencv2 -I {fileDirname}\...\include -L D:/opencv/build/install/x64/mingw/lib -l libopencv_world4100 && d i r dir dirfileNameWithoutExt",

这个 -I ${fileDirname}\...\include 一定要加!!!!!不然找不到头文件。

然后在执行就好了,好了该你们去踩坑了!!希望能帮到诸位!

相关推荐
我变成萤火虫1 小时前
河南萌新联赛2026第(四)场:南阳理工学院
数据结构·c++·算法·贪心算法·stl·动态规划
青 春 记 忆3 小时前
零基础入门Python11|Git实战:为任务管理器建立版本历史
开发语言·git·vscode·python·python3.11
余额瞒着我当琳5 小时前
C++--深拷贝三件套 + swap + 写时拷贝 + vector 扩容 + reserve
java·开发语言·c++
ShineWinsu6 小时前
对于C++:布隆过滤器(bloomfilter)的详细解析
c++·面试·位图·位运算·布隆过滤器·海量数据·比特位
牛油果子哥q10 小时前
C++内存模型与深浅拷贝万字详解:栈堆静态内存布局、深浅拷贝底层差异、内存泄漏根治、拷贝崩溃踩坑、手写深拷贝实战
java·开发语言·c++
大鹏的NLP博客10 小时前
通用 Linux 嵌入式板端 C/C++ ABI 与 Glibc 依赖治理规范
linux·c++·交叉编译
ysa05103011 小时前
c++常用自带函数用法与注意
c++·笔记·算法
qq_1508419913 小时前
从CVI(C)到Pyside(python)/Qt(C++)/VS(C#)的一点吐槽
c++·qt·c#
W_3260014 小时前
Python-OpenCV 轮廓进阶:旋转最小外接矩形、图像矩求质心、嵌套层级 hierarchy、轮廓形状匹配
图像处理·python·opencv·机器学习·计算机视觉
鸿芯微控科技15 小时前
MFC模拟量信号异常怎么排查?0-5V、4-20mA接线与量程换算
c++·5g·mfc·故障排查·质量流量控制器·4-20ma·模拟量信号