Windows下CLion使用C++调用OpenCV时出现Mutex编译错误如何解决
OpenCV MinGW Mutex编译错误修复方案
- 问题根因:该错误本质是标准库线程组件缺失 + 工具链/库版本不匹配,不需要降级过旧的编译器,按以下优先级操作即可修复:
- 更换支持POSIX线程的MinGW版本
当前使用的MinGW32大概率是win32线程模型版本,该版本不提供std::recursive_mutex等C++标准库线程类实现。卸载现有MinGW,下载安装带POSIX线程模型的MinGW-w64版本(可选32/64位匹配开发需求),安装后在CLion的工具链设置中重新指向新的MinGW路径。 - 调整C++标准版本
目前OpenCV4.x稳定版对C23的兼容性尚未完全覆盖,将CMakeLists.txt中的set(CMAKE_CXX_STANDARD 23)修改为set(CMAKE_CXX_STANDARD 17)即可,C17是OpenCV全版本兼容的稳定标准。 - 确认OpenCV库和MinGW匹配
不要直接使用OpenCV官方提供的预编译包,官方预编译包是MSVC编译器生成的,和MinGW不兼容。需要用安装好的MinGW从OpenCV源码重新编译生成库文件,或者下载对应MinGW版本编译好的OpenCV预编译包。
- 操作完成后,清空CMake缓存(删除build文件夹后在CLion中重新加载CMake项目),再执行编译即可正常运行。
内容的提问来源于stack exchange,提问作者Cameron Griffiths
相关产品推荐
相关产品推荐

