错误描述:
在Visual Studio中配置完成opencv的静态编译设置后,运行。结果报了很多类似
opencv_highgui343.lib(window_w32.obj) : error LNK2001: 无法解析的外部符号 __imp_BitBlt
这样“无法解析的外部符号”的错误。
找到错误原因:
经过查询资料发现,大部分情况下这是由于某个lib文件依赖其他lib文件,而被依赖的文件没有被添加到附加依赖项中所致。
比如这项错误中,在opencv中找到window_w32.cpp文件,这个文件的BitBlt函数就是调用了其他库。因此我查询了BitBlt对应的静态库文件为gdi32.lib。同样的方法,我对应找到其他没有被包含的库文件为user32.Lib advAPI32.Lib。而这些库文件可以从Windows SDK中找到。
错误解决:
(1)安装windows SDK
部分博客说可以从VS installer中的单个组件找到对应c/c++的windows SDK,但是我没有找到,所以就自己下载一个。从下面的网址下载:
https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/
安装后,在VS项目中配置。
(2) 项目配置
添加附加依赖项: