环境:Window10 + Visual Studio 2019
也适用于其他版本
究其原因,只不过是程序里用了某个函数,这个函数依赖于某个库文件,然后程序并没有找到这个库文件,所以要么是没添加,要么就是添加错了,没添加请参考第一个办法,添加错误请参考第二个办法。都不行请参考第三个办法。
1. 采用第三方库或者开源库,忘记添加依赖项,添加方法:(建议采用相对路径,关于相对路径请参照博客https://blog.csdn.net/weixin_44330072/article/details/106492533
解决方案右击→配置属性→C/C++→常规→附加包含目录→(这里添加要包含的头文件的目录,比如include或者inc文件夹)
解决方案右击→配置属性→链接器→常规→附加库目录→(这里包含库的文件夹,比如libs文件夹)
解决方案右击→配置属性→链接器→输入→附加依赖项→(这里添加库文件,就是.lib文件)
(上述办法请在属性页顶端确认好相关配置是否对应,是Debug模式还是Release模式,是x86/win32还是x64。比如是在Debug模式下Win32平台。编译运行时候的配置跟设置的配置必须一致。请往下看)
2. 确定通过上述办法添加了,还是出现报错,那么请考虑是否添加错误,错误的可能是有如下可能:
① debug和release模式的区别,以OpenCV举例,OpenCV的库文件Debug模式和Release模式不一样,后面带d的是Debug需要的库文件,不带d的是Release需要的。例如 opencv_core420d.lib 和 opencv_core420.lib 。
② 如上面所示也需要注意32位平台还是64位平台。这时候可能会造成新的报错,如博客:https://blog.csdn.net/weixin_44330072/article/details/106493405
3. 上面两种可能性都排除了以后还是仍然报错的话,可以参考本条办法,例如函数 void func() 在外部依赖文件 xxx.cpp(前提是 #include "xxx.h"没有报错,而且 void func() 函数能正常引用,只是运行或者编译时候出现问题。)这种情况一般是在项目属性→C/C++→附加包含目录里面添加了 xxx.h 存在的目录。此时就会出现能正常引用,但是编译时候显示无法解析的外部符号,后面的函数正是前面举例的 void func() 。
解决方法:只需要将 xxx.h 和 xxx.cpp 添加到项目中,具体办法是 右键项目→添加→现有项,然后添加进来就可以了。
如果此时出现了更多的“无法解析的外部符号报错”,那一般是证明确实是这种原因,只是因为 xxx.cpp 中某些函数是依赖外部某个文件,需要把这个文件也得添加进来,以此类推,将所有有关文件都添加进来就能解决啦。
添加现有项的时候推荐,先将此文件复制到项目目录下,然后再添加进来比较好。