1、error LNK2019: 无法解析的外部符号"struct ********"

一、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;
14 }

五、总结

此类错误不太容易发现,读者在敲代码时尽量细心,犯错之时,要学会总结,利用好手上的工具。

希望可以帮助到各位!

posted @ 2022-07-26 20:14  Erudite  阅读(201)  评论(0编辑  收藏  举报