一、C++ 错误类型 :error LNK2019 无法解析的外部符号
注:本人用的编译器版本:VS2015
C++中报 error LNK2019、LNK2001、......等类型的错误,对刚接触C++的同学来说是一件非常令人头疼的事情,因为造成此类问题的原因非常多,这里只讲本人报错的一种原因。
二、报错截图
三、报错原因
1、本人是因为函数声明 accumulate 与函数实现名 **acculate **称不一致导致报 error LNK2019 错。
2、在声明函数 accumulate(......) 的时候,未将该函数实现,导致报错,这是造成 error LNK2019 错误原因的一种;
报错前的代码:
1 free_throws& accumulate(free_throws& target, const free_throws& source); // 函数声明
2
3 int main() // 主函数
4 {
5 ...........
6 }
7
8 free_throws& acculate(free_throws & target, const free_throws & source) // 函数实现
9 {
10 target.attempts += source.attempts;
11 target.made += source.made;
12 set_pc(target);
13 return target;
14 }
四、解决办法
1.首先检查所声明的所有函数都有没有实现;
2.检查声明函数与实现函数的函数名、参数列表、返回值是否一致;
3.检查后期自己是否有修改过函数名,导致声明函数名与实现函数名不一致
修改后的代码:
1 free_throws& accumulate(free_throws& target, const free_throws& source); // 函数声明
2
3 int main() // 主函数
4 {
5 ...........
6 }
7
8 free_throws& accumulate(free_throws & target, const free_throws & source) // 函数实现
9 {
10 target.attempts += source.attempts;
11 target.made += source.made;
12 set_pc(target);
13 return target;
}
五、总结
此类错误不太容易发现,读者在敲代码时尽量细心,犯错之时,要学会总结,利用好手上的工具。
希望可以帮助到各位!