Visual Studio2019+Opencv静态编译错误记录 opencv_highgui343.lib(window_w32.obj) : error LNK2001: 无法解析的外部符号 __

错误描述:

在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)  项目配置

添加附加依赖项:

Visual Studio2019+Opencv静态编译错误记录 opencv_highgui343.lib(window_w32.obj) : error LNK2001: 无法解析的外部符号 ___第1张图片

包含目录和库目录我新增的分别为:

包含目录:
D:\Windows Kits\10\Include

D:\Windows Kits\10\Include\10.0.19041.0

D:\Windows Kits\10\Include\10.0.18362.0

Visual Studio2019+Opencv静态编译错误记录 opencv_highgui343.lib(window_w32.obj) : error LNK2001: 无法解析的外部符号 ___第2张图片

库目录:

D:\Windows Kits\10\Lib\10.0.18362.0\um\x64

Visual Studio2019+Opencv静态编译错误记录 opencv_highgui343.lib(window_w32.obj) : error LNK2001: 无法解析的外部符号 ___第3张图片

在库目录下有附加依赖项中添加的gdi32.lib user32.Lib advAPI32.Lib。

总结

遇到”无法解析的外部符号“的错误,可以看看文件里调用的一些函数是不是没有include进对应的头文件,或者是不是一些库没有加入。具体需要添加什么库,可以复制函数名到百度百科里去查。

 

你可能感兴趣的:(环境配置)