笔者用anaconda创建虚拟环境,然后在虚拟环境中安装Cmake+Opencv4.5.2,笔者之前手动配置过opencv环境,觉得比较麻烦,所有这一次选择anaconda来配置opencv所需环境。利用anaconda执行Cmakelists.txt生成工程项目后,运行测试代码:
#include "opencv2/opencv.hpp"
using namespace cv;
int main()
{
Mat image = imread("E://test2.jpg",1);// Show stuff
imshow("Original Image", image);
// Wait until user press some key
waitKey();
return 0;
}
发现VS中报错:
LNK2019:严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 “void __cdecl cv::imshow(class std::basic_string<char,struct std::char_traits,class std::allocator > const &,class cv::debug_build_guard::_InputArray const &)” (?imshow@cv@@YAXAEBV?
b
a
s
i
c
s
t
r
i
n
g
@
D
U
?
basic_string@DU?
basicstring@DU?char_traits@D@std@@V?$allocator@D@2@@std@@AEBV_InputArray@debug_build_guard@1@@Z),函数 main 中引用了该符号
LNK1120:严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK1120 1 个无法解析的外部命令 Display
但是我选择release模式又能够运行,这时候我很迷,然后经过漫长的网上查阅资料发现一个解决方法:
(感谢https://blog.csdn.net/pengyouyou/article/details/83958181)
然后我就查看了一下我项目的的依赖项:项目-》属性-》链接器-》输入-》添加依赖项
看了我的依赖项我就发现问题了,我的依赖项全是openv_***.lib结尾的,debug模式下应该需要添加opencv_***d.lib结尾的依赖项,debug模式下应该添加opencv_***.lib。这是我项目环境配置过程中的一个错误!!!!
然后我上网查了查资料,在依赖项中只添加opencv_world452d.lib即可(opencv_world452.lib和opencv_world452d.lib分别包含了release模式、debug模式下所有所需的依赖项)。所以我就将之前的opencv_***452.lib全部删除添加opencv_world452d.lib。
修改后依赖项如下:
注意:opencv_world452d.lib和opencv_world452d.dll需要放在同一个目录一下
然后就能够成功运行了!!!!
补充:如果没有opencv_world452d.lib,去哪里找(452代表的版本号,如果是opencv3.4.1的话就需要opencv_world341.lib),参考https://blog.csdn.net/m0_37350758/article/details/82490904
笔者是先在opencv官网下载opencv-4.5.2-vc14_vc15.exe,然后安装,安装后在build文件夹里面可以找到opencv_world452d.lib和opencv_world452d.dll文件