VS2022下CMake编译Win32版OpenCV的编译链接配置问题
VS2022 搭配32位Dear ImGui配置自编译OpenCV操作指南
先解决编译产物结构混乱问题
自编译产物和官方预编译包结构不一致,是因为编译完OpenCV源码后没有执行INSTALL生成步骤:
- 打开CMake配置时指定的OpenCV编译输出目录,找到
OpenCV.sln用VS2022打开 - 在解决方案资源管理器里找到CMakeTargets分组下的
INSTALL项目,右键选择「生成」,等待执行完成 - 生成完成后,编译输出目录下会出现
install文件夹,里面的include、lib、bin结构和官方预编译包完全一致,后续配置全部用这个目录下的文件即可。
头文件引入失败修复
头文件找不到是因为包含目录路径配置错误:
- 右键ImGui项目打开属性页,顶部平台选择Win32(x86),和ImGui的32位架构保持一致,配置先选所有配置
- 找到「配置属性 → VC++目录 → 包含目录」,添加
install/include路径,验证标准:打开这个路径能直接看到opencv2文件夹,里面包含core.hpp等核心头文件 - 配置完成后,代码里写
#include <opencv2/opencv.hpp>即可正常引入,不要直接引用源码目录下的头文件。
库文件配置修正
- 回到VC++目录设置页,找到「库目录」项,按编译配置区分路径:
- Debug配置下,添加
install/x86/vc17/lib/Debug路径,之后到「链接器 → 输入 → 附加依赖项」添加opencv_world460d.lib - Release配置下,添加
install/x86/vc17/lib/Release路径,附加依赖项添加opencv_world460.lib
- Debug配置下,添加
- 不要引用临时编译目录下的零散lib文件,必须使用install目录下规整后的lib,避免出现链接符号找不到的问题。
DLL文件规范配置
bin目录下的dll不需要做特殊注册,也不要把OpenCV源码直接移入项目目录,选以下任意一种规范方式即可:
- 开发阶段推荐:把对应配置下的所有OpenCV dll文件(Debug选bin/Debug下的dll,Release选bin/Release下的dll)直接复制到项目生成exe的同级目录,一般是项目下的
x86/Debug或x86/Release文件夹 - 全局使用推荐:把
install/x86/vc17/bin/Debug和install/x86/vc17/bin/Release两个路径添加到系统PATH环境变量,添加完成后必须重启Visual Studio,否则环境变量不会生效。
注意:所有配置路径都不要用相对路径跳转到OpenCV源码目录,全部指向install目录下的对应文件,后续升级OpenCV版本只需要替换install文件夹内容即可,不需要修改项目配置逻辑。
内容的提问来源于stack exchange,提问作者Daedalus
相关产品推荐
相关产品推荐

