✨ 前言
很多人想在 CLion + MinGW 环境里开发 OpenCV,但会遇到一个超级坑:
Found OpenCV Windows Pack but it has no binaries compatible with your configuration.
原因就是——官方 OpenCV Windows 包只支持 MSVC,不支持 MinGW!
所以 你用 CLion(MinGW) 必须自己编译 OpenCV。
本文带你一步一步从零开始,最终在 CLion 中成功运行 OpenCV。
不想麻烦的话可以直接下载我编译好的文件
通过网盘分享的文件:opencv_install_mingw
链接: https://pan.baidu.com/s/1r2sbDurl8s0ZMXJcIpzDGw?pwd=k9bc 提取码: k9bc
一、环境准备
1. 安装 MinGW(重要:必须是 posix + seh)
推荐安装 MSYS2 MinGW64,最稳定:
pacman -S mingw-w64-x86_64-gcc
验证:
g++ --version
确保能看到 posix 字样。
2. 安装 CMake(版本 ≥ 3.16)
直接去官网安装即可。
3. 下载 OpenCV 源码(不是 EXE)
打开仓库:
https://github.com/opencv/opencv
下载 ZIP 或使用 git:
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
❗ 注意:必须是 源码版本,EXE 安装包不能用!
放到一个目录:
E:\workCode\Project\MyProject\openCV\git\opencv\build_mingw
🍻 二、使用 CMake 手动生成 MinGW 工程
我们要自己把 OpenCV 编译成 MinGW 的 .a 和 .dll 文件。
创建一个 build 文件夹:
E:\workCode\Project\MyProject\openCV\git\opencv\build_mingw
进入该目录,在此路径打开 PowerShell。
运行 CMake 指令:
cmake -G "MinGW Makefiles" ^
-D CMAKE_BUILD_TYPE=Release ^
-D CMAKE_C_COMPILER=E:\msys64\mingw64\bin\gcc.exe ^
-D CMAKE_CXX_COMPILER=E:\msys64\mingw64\bin\g++.exe ^
-D OPENCV_EXTRA_MODULES_PATH=E:\workCode\Project\MyProject\openCV\git\opencv_contrib\modules ^ -D BUILD_opencv_world=ON ^
🤔 为什么要 opencv_world?
因为只生成一个
opencv_world480.dll / .a,管理更方便。
🍳 三、开始编译 OpenCV
在 build_mingw 目录执行:
mingw32-make -j12
第一次编译会非常久(40~70 分钟),取决于 CPU。
成功后会看到输出:
opencv_world480.dll opencv_world480.lib 或 .a
所有文件都位于:
opencv/build_mingw/install
用命令:
mingw32-make install
执行后会生成 clean 的 include + lib + bin 结构。
。
🍿 四、配置 CLion 使用你的 OpenCV(MinGW 版本)
在 CLion 新建一个项目,将 OpenCV 设置为你的 MinGW 版本。
例如:
E:\workCode\Project\MyProject\openCV\git\opencv\build_mingw\install\
结构大概是:
include/ x64/ lib/ bin/
修改 CMakeLists.txt
在 CMakeLists 添加:
set(OpenCV_DIR "E:/workCode/Project/MyProject/openCV/git/opencv/build_mingw/install") find_package(OpenCV REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS}) link_directories(${OpenCV_LIBRARY_DIRS}) add_executable(demo main.cpp) target_link_libraries(demo ${OpenCV_LIBS})
或如果你启用了 opencv_world:
target_link_libraries(demo opencv_world480)
🧪 五、测试程序 demo
main.cpp:
#include <opencv2/opencv.hpp>
#include <iostream>
int main() {
cv::Mat img(300, 300, CV_8UC3, cv::Scalar(0, 255, 0));
cv::imshow("test", img);
cv::waitKey(0);
return 0;
}
运行后正常弹出一个绿色窗口,就说明环境完全 OK!
🧧 六、常见错误及解决方案
❌ 1. Found OpenCV Windows Pack but no binaries…
原因:
你下载的是 OpenCV EXE 安装包(MSVC 编译)
解决:
必须使用 CMake 自己用 MinGW 编译 OpenCV。
❌ 2. undefined reference to cv::xxxx
原因:
没有链接 MinGW 版本的库。
解决:
-
CMakeLists.txt 加上
target_link_libraries(demo opencv_world480)
-
lib 路径一定是你安装后的 MinGW 版本。
❌ 3. 链接 DLL 找不到
运行时报:
xxx.dll not found
解决:
把 DLL 放到项目 exe 同目录:
copy E:\opencv\build_mingw\install\bin\*.dll .\cmake-build-debug
794

被折叠的 条评论
为什么被折叠?



