1)前置条件:MFC下(VC/VS环境下应该也可以)
2)产生错误(公共即这类错误都有提示)现象:Error LNK2001 unresolved external symbol "xxxx"
说明:
(1)这类错误都有提示信息:Error LNK2001 unresolved external symbol " 具体错误的信息“; (”“中的内容下面说明)。
(2)”“中的内容下面说明为具体错误的提示信息; 基本上可以看到是某个外部变量、函数或者内联函数 ,它们 在某个 头文件中用extern var/fn; 或者inline fn,但在使用的xxx.cpp文件中由于没有再次声明变量,或者没有定义函数 ;
3)错误的原因及解法:
原因及解法:extern var/fn;就拿var(变量)来说吧,在头文件中extern type var,但在xxx.cpp中使用时,没有重新 type var;
所以解法是——在使用的xxx.cpp中要重新type var; 这样就不会报错。
小结:总的原因就是在头文件中用extern声明外部变量,但在定义函数在,缺少了对该变量再次声明,所以产生这样的错误。
4)例子:
a.h 中有如下 :
extern int iAbc;
在使用iAbc的某个定义函数 中,如在www.cpp文件中:应该再一次进行如下操作;
int iAbc;
这样就不会提示Error LNK2001
5)总结:Error LNK2001 的错误,都是由于对变量或者函数使用extern、inline(针对函数)但,使用时却没有重新声明变量,或者函数没有具体的被定义(或者没有加载 库导致函数没定义),所以编译器无法解释某个标识符号;