VC++项目过程中经常遇到无法解析的外部符号 link error 2019 这样的错误;很恼人~~~~~
出现这种情况一般是由于头文件中声明了函数或者类型;但是没有相关的实现源文件;通常情况是我们引入了第三方SDK的头文件,并在程序中使用(引用)了头文件中的函数或者类型;连接器却无法链接;
原因及解决方案:
第一种可能:第三方SDK一般以DLL文件的形式提供给我们,并提供相应的头文件及LIB文件;LIB文件是链接时需要的,它包含了DLL中函数的想关信息,因此我们只需要在项目添加对这些LIB的依赖既可;
在VS2008中点击项目-》右键-》属性-》配置属性-》链接器-》输入-》附加依赖项:将相关的lib文件加入到附加依赖项中;
第二种可能:我们调用的函数或者类型并未实现;此时我们只要自己建立对应的源文件,并实现这些函数即可;
实例:error LNK2019: unresolved external symbol "public: __thiscall Thread_updateCurrentDateTime::Thread_updateCurrentDateTime(void)"......referenced in function ......
原因:在类前面定义了类Thread_updateCurrentDateTime,但没有实现构造函数Thread_updateCurrentDateTime(void)
参考:http://blog.sina.com.cn/s/blog_4b0020f301012750.html
第三种可能:外部引用的基础库与当前所使用的基础库冲突(即同一基础库但版本不同);此时我们需要重新编译外部引用或者换掉基础库使用与外部引用相同版本的基础库;
注意:qt-opensource-windows-x86-vs2010-4.8.7.exe与qt-opensource-windows-x86-vs2008-4.8.7.exe虽然均为4.8.7版本,但仍然不能一起使用,即非完全相同的版本;