如何在搭配mingw64编译器的CodeBlocks 20中使用最新OpenCV预编译库
前置准备
- 首先确认你使用的OpenCV预编译库为mingw64架构构建的版本:官方默认发布的Windows预编译包仅适配MSVC编译器,直接拿来链接mingw64会触发大量ABI不兼容、符号未定义报错,必须使用匹配你当前mingw64大版本(如11.x/13.x)构建的OpenCV库,版本差过大也会出现兼容问题。
- 将OpenCV压缩包解压到纯英文、无空格、无特殊字符的本地路径,例如
D:\dev\opencv,不要存放在中文目录、Program Files这类带空格或权限限制的路径下,避免IDE识别路径失败。
CodeBlocks 20 配置流程
- 打开CodeBlocks,点击顶部菜单栏
Settings -> Compiler,确认当前选中的工具链为你正在使用的mingw64,切换到Search directories标签页:- 进入
Compiler子标签,添加OpenCV头文件目录:[你的OpenCV解压根目录]\build\include - 进入
Linker子标签,添加OpenCV静态库目录:[你的OpenCV解压根目录]\build\x64\mingw\lib
- 进入
- 切换到同配置页的
Linker settings标签,在Link libraries列表中添加项目需要依赖的OpenCV库文件:- mingw版本的OpenCV静态库统一为
.a后缀,调试(Debug)版库文件名末尾带d标识,例如libopencv_core490d.a、libopencv_highgui490d.a、libopencv_imgproc490d.a、libopencv_imgcodecs490d.a,基础开发先添加这四个核心模块即可,用到calib3d、features2d等其他模块时再补充对应库文件 - 发布(Release)版库文件名不带
d后缀,例如libopencv_core490.a,Debug和Release配置要分别添加对应版本的库,混加会导致运行时崩溃、内存访问错误
不要一次性添加所有OpenCV库,仅添加实际用到的模块即可,否则会大幅拉长链接耗时
- mingw版本的OpenCV静态库统一为
- 配置系统运行环境:将OpenCV动态库目录
[你的OpenCV解压根目录]\build\x64\mingw\bin添加到Windows系统Path环境变量中,添加完成后必须重启CodeBlocks让环境变量生效,否则编译通过后运行会触发找不到dll的错误。如果不想改系统环境变量,也可以把用到的dll文件直接复制到项目生成exe的同级目录下。
常见报错排查
- 编译阶段报大量
undefined reference to cv::xxx:优先检查你下载的OpenCV是不是MSVC版本的.lib库,mingw无法识别MSVC格式的库;其次检查链接器配置的库路径是否正确、是否漏加依赖模块的库文件。 - 编译通过但运行时提示
找不到opencv_xxx.dll:检查Path中添加的bin路径是否正确,确认CodeBlocks是在加完环境变量之后重启的,也可以直接把对应dll拷贝到exe所在目录临时解决。 - 编译阶段提示
fatal error: opencv2/core.hpp: No such file or directory:检查编译器搜索路径中添加的include目录是否正确,路径中是否存在中文、空格或拼写错误。 - 运行时无提示直接崩溃、报内存访问异常:检查Debug/Release配置下链接的库是否匹配,是否存在混加带d和不带d后缀库的问题。
内容的提问来源于stack exchange,提问作者bonezegei
相关产品推荐
相关产品推荐

