当出现 编译的时候报错“LNK2019: 无法解析的外部符号:xxx,该符号在xxx中被引用”
的时候 。
分析原因:
- 出现这个LNK错误是链接错误,因为c/c++程序需要经过:预处理 --> 编译 --> 链接 -->汇编 。
编译:对程序按照语言特性进行词法、语法、语义分析,错误检查无误后生成汇编代码。注意头文件不参与编译,编译器对工程中的多个源文件是分离开单独编译的
链接:将多个obj文件合并成一个,并处理没有解决的地址问题。
所以方法没有实例化,在链接的时候会出现找不到地址,所以会报错
可能原因
- 所以经常如果只在.h文件中声明了某个方法,没有在cpp中实现会出现这个问题。注意通过报错查看文件是否加到了项目中(有时候可能忘记将库文件加到项目中),并且查看错误的地方代码(查看该报错的函数是不是只在.h中声明,但是没有在.cpp中实例化)
- 文件同名,工程中有相同名字的文件或者类
- dll文件未添加,将.dll放到生成的.exe所在的文件夹下(项目->属性->配置属性->常规->输出目录,可以看到.exe生成在哪个目录下)