目录
配置opencv
- 创建空项目,右键选择属性,选择VC++目录
- 常规包含目录中添加头文件路径
D:\opencv\opencv\build\include ; D:\opencv\opencv\build\include\opencv2
- 库目录中添加lib路径
D:\opencv\opencv\build\x64\vc16\lib
- 选择连接器,选择输入,在依赖项中添加
opencv_world4100d.lib
- 在环境变量值添加bin路径
D:\opencv\opencv\build\x64\vc16\bin
自此配置完成
彻底理解配置
核心概念:编译、链接、运行的区别
编译阶段
做什么:将源代码.cpp和头文件.h转化为中间文件.obj
需要的配置:
- 告诉编译器去哪找头文件,所以我们需要配置头文件的路径
链接阶段
做什么:讲多个.obj与库文件合并,最终生成可执行文件.exe
需要配置:
- 告诉链接器去哪找库文件,所以我们需要配置库文件的路径
- 明确告诉链接器需要链接哪些库文件
注
:即使库目录正确,链接器也不会盲目链接目录下的所有库,需通过依赖项显式指定。
不添加依赖项的后果:链接失败(未解析的外部符号错误)
运行阶段
做什么:执行.exe文件,此时需要加载动态链接库
需要配置:
- 环境变量PATH:告诉操作系统去哪里找.dll文件
- 或者将.dll文件复制到.exe所在目录
注
:运行时,系统会按照.exe所在目录、系统目录(如C:\Windows\System32)、环境变量PATH中的目录去找.dll。若未找到程序会崩溃并报错 。
总结
-
编译:头文件告诉编译器"有什么",但实现藏在库中。
-
链接:库目录告诉链接器"去哪找",附加依赖项告诉它"找什么"。
-
运行:DLL是最终的实现,系统需要知道去哪里加载它们。
通过理解这三个阶段的区别,你可以更自信地配置任何第三方库(不仅仅是OpenCV)。如果遇到问题,按照编译→链接→运行的顺序逐步排查,一定能找到根源!