在使用其他人的动态库或者第三方库的时候经常会遇到无法解析外部符号的问题。此时代码没有报语法错误,说明代码和你引用的动态库头文件都没问题,问题出现在lib文件上,所以我们要从3个方面进行排查:
1.检查lib文件的路径是否存在问题(这里以VS2015为例)
务必确保这两个地方的lib路径没有问题,具体查看哪个位置,看你的lib路径是在这两个地方中的哪一个添加的。
2.查看是否引入了对应的 .lib文件,可以在下图的位置中查找
3.如果前两个都没问题,那就是你的动态库提供的头文件和.lib文件的版本不对应。如果是引用了其他同事写的库,大概率是头文件的函数声明修改了,而动态库没有重新编译,导致你使用的头文件和lib文件不对应。如果是第三方库,请检查库的版本和头文件的版本是否对应。
这里提供一个判断的小技巧:如果像下面显示析构函数都无法解析(图中的序号1),基本可以确定是前两种情况。如果是动态库中的某一个函数无法解析(只有图中的序号2),那就是第3种情况了,此时要不然更换对应的头文件,要不然更换对应的lib文件。