error LNK2019无法解析的外部符号解决方案 && error LNK1120: 1 个无法解析的外部命令

编程时遇到的LNK2019和LNK1120错误通常是因为函数只有声明而缺少定义。这些问题包括未定义的函数、遗漏的析构函数定义以及模板类中重载输出运算符的特殊处理。解决方法涉及补充函数定义、确保析构函数正确实现以及理解模板类中友元函数的实现依赖性。
摘要由CSDN通过智能技术生成

编程过程中常见error总结(一)
这里写图片描述
相信大家在编程的时候都被上面类似的错误困扰过,无法解析的外部符号?什么意思?其实原因几乎是相同的,就是函数只是声明了却没有定义,上面错误列表的出现就是因为我把相应的函数注释掉了(为了演示),但是我们在写较多的代码的时候很容易把某些函数的定义忽略掉,就会造成自己都不知道错误出在哪里。下面就拿几种常见的做解析:

1.《有相应的函数声明但是没有函数定义》——这种比较好理解也容易解决,只要把没有定义的函数的代码补上就行了。例如提示这样的错误信息:错误 2 error LNK2001: 无法解析的外部符号 “public: virtual bool __thiscall SeqStack::IsFull(void)const ” (?IsFull@?$SeqStack@H@@UBE_NXZ)……,这个就代表IsFull(void)这个函数只是声明了,但是用的时候没有相应的定义。

  1. 《析构函数——重点注意》——这个错误的产生实际上和第一种的原因是一样的,但是这种析构函数忘了定义的情况太容易产生了,所以在这里作为一种易错错误来强调,希望大家永远记住。
  2. 《重载输出运算符 && 模板类》——这个错误比较特殊,我遇到的时候也郁闷了很久,是在写C++的模板类的时候,重载<<输出运算符(这是我当时的声明:friend ostream & operator << (ostream& os, SeqStack s)),在class外我进行了相应的定义(这是我当时的定义: ostream & operator << (ostream& os, SeqStack s) {
    os << “top = ” << s.top << endl; //输出栈顶位置
    for (int i = 0; i <= s.top; i++) {
    os << i << “:” << s.elements[i] << endl;
    }
    return os;
    })。看似合理的一切总是会报出意外的错误:错误 1 error LNK2019: 无法解析的外部符号 “public: __thiscall SeqStack::~SeqStack(void)” (??1?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值