CLion 下使用 MinGW 编译 OpenCV(超详细踩坑记录 + 超清晰步骤)

✨ 前言

很多人想在 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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值