创作不易,您的打赏、关注、点赞、收藏和转发是我坚持下去的动力!
原因分析
错误提示 LNK2019: 无法解析的外部符号
表示在编译过程中,链接器找不到 OpenCV 的相关函数实现。这通常是由于以下原因引起的:
-
没有正确链接 OpenCV 库:
- 你在代码中使用了 OpenCV 的
imshow
、imread
等函数,但在 Visual Studio 的项目配置中,可能没有添加相应的 OpenCV 库文件,因此链接器无法找到这些函数的定义。
- 你在代码中使用了 OpenCV 的
-
库文件版本不匹配:
- 项目中使用的 OpenCV 库版本(Debug 或 Release)可能与当前编译模式不匹配。例如,你在编译
Debug
模式时,却链接了 OpenCV 的Release
库。
- 项目中使用的 OpenCV 库版本(Debug 或 Release)可能与当前编译模式不匹配。例如,你在编译
解决方案
按照以下步骤进行调整,确保正确链接 OpenCV 库:
1. 配置 OpenCV 库文件路径
-
右键点击你的项目,选择“属性”。
-
在“配置属性”中,找到以下选项进行配置:
-
C/C++ -> 常规 -> 附加包含目录:添加 OpenCV 的
include
文件夹路径。例如:D:\opencv\build\install\include
-
链接器 -> 常规 -> 附加库目录:添加 OpenCV 的
lib
文件夹路径。例如:D:\opencv\build\install\x64\vc16\lib
-
2. 添加 OpenCV 库文件
-
在“链接器 -> 输入 -> 附加依赖项”中,添加适合你 OpenCV 版本的库文件。
-
如果你使用的是
Debug
模式,请添加Debug
版本的库文件。例如,如果使用 OpenCV 4.5.x,请添加:opencv_world450d.lib
如果你使用的是
Release
模式,请添加:opencv_world450.lib
注意:库文件的名称根据你安装的 OpenCV 版本而定,请确保使用正确的版本号。
3. 检查编译模式
- 请确保在编译
Debug
模式时,链接的是带有d
后缀的 OpenCV 库文件(如opencv_world450d.lib
)。 - 在编译
Release
模式时,链接的是不带d
后缀的 OpenCV 库文件(如opencv_world450.lib
)。
4. 重新编译
- 完成以上设置后,保存项目属性,重新生成项目。此时,链接器应该能够找到 OpenCV 库文件并成功编译。
注意事项
- 如果你使用了
opencv_world
库(如opencv_world450.lib
),不需要单独添加其他 OpenCV 模块(如opencv_core.lib
、opencv_imgproc.lib
等),因为opencv_world
是一个集成了所有模块的单一库文件。 - 如果仍然出现链接错误,请检查库文件路径是否设置正确,并确保你的 OpenCV 安装中包含对应版本的库文件。