error LNK2019无法解析的外部符号解决方案 && error LNK1120: 1 个无法解析的外部命令
来源:互联网 发布:国外开源cms 编辑:程序博客网 时间:2024/05/27 00:43
编程过程中常见error总结(一)
相信大家在编程的时候都被上面类似的错误困扰过,无法解析的外部符号?什么意思?其实原因几乎是相同的,就是函数只是声明了却没有定义,上面错误列表的出现就是因为我把相应的函数注释掉了(为了演示),但是我们在写较多的代码的时候很容易把某些函数的定义忽略掉,就会造成自己都不知道错误出在哪里。下面就拿几种常见的做解析:
1.《有相应的函数声明但是没有函数定义》——这种比较好理解也容易解决,只要把没有定义的函数的代码补上就行了。例如提示这样的错误信息:错误 2 error LNK2001: 无法解析的外部符号 “public: virtual bool __thiscall SeqStack::IsFull(void)const ” (?IsFull@?$SeqStack@H@@UBE_NXZ)……,这个就代表IsFull(void)这个函数只是声明了,但是用的时候没有相应的定义。
- 《析构函数——重点注意》——这个错误的产生实际上和第一种的原因是一样的,但是这种析构函数忘了定义的情况太容易产生了,所以在这里作为一种易错错误来强调,希望大家永远记住。
- 《重载输出运算符 && 模板类》——这个错误比较特殊,我遇到的时候也郁闷了很久,是在写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?SeqStack@H@@QAE@XZ),该符号在函数 "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class SeqStack<int>)" (??6@YAAAV?basic_ostream@DU?chartraits@D@std@@@std@@AAV01@V? SeqStack@H@@@Z) 中被引用。这是为什么呢?函数的声明和定义都在,却依旧提示这个流重载函数没有定义。琢磨了好久,又查找资料终于解决了,根本原因是——模板类。
“这是因为代码中用到模板类template 而在类内声明友元函数的时候也用到了,所以此时友元函数是依赖于类的实现而实现的,编译器才会报错。”这是原文的解释,解决方式也不一样,这里给出原文链接(文章中给出了详细的方法及原因) C++模板类中声明友元函数重载输入和输出运算符时,提示无法解析的外部符号解决方案
尊重原著!)。
阅读全文
1 0
- error LNK2019无法解析的外部符号解决方案 && error LNK1120: 1 个无法解析的外部命令
- 错误提示:error LNK2019: 无法解析的外部符号和fatal error LNK1120: 1 个无法解析的外部命令
- error LNK2019: 无法解析的外部符号 / fatal error LNK1120: 2 个无法解析的外部命令
- fatal error LNK1120: 1 个无法解析的外部命令
- fatal error LNK1120: 1 个无法解析的外部命令
- fatal error LNK1120: 1 个无法解析的外部命令
- error LNK1120: 1 个无法解析的外部命令
- error LNK2001: 无法解析的外部符号 "public: static struct,fatal error LNK1120: 4 个无法解析的外部命令
- error LNK2019: 无法解析的外部符号
- error LNK2019(无法解析的外部符号)
- error LNK2019(无法解析的外部符号)
- error LNK2019: 无法解析的外部符号
- error LNK2019: 无法解析的外部符号
- error LNK2019: 无法解析的外部符号
- error LNK2019: 无法解析的外部符号
- error LNK2019: 无法解析的外部符号
- error LNK2019: 无法解析的外部符号
- error LNK2019 无法解析的外部符号
- C语言操作符总结
- 2017长乐国庆欢乐赛Day1
- 剑指offer--替换空格
- dinic 最大流模板
- 习题7-7:埃及分数(迭代加深)
- error LNK2019无法解析的外部符号解决方案 && error LNK1120: 1 个无法解析的外部命令
- 51nod_数字1的数量
- JAVA提高篇(30)--Map接口
- ci3中redis的配置
- Android SQLiteOpenHelper Sqlite数据库的创建与打开
- boost之asio同步io使用实例
- C++面试题(十四). 腾讯 & 斐讯 & 网宿 & TP-LINK
- IDA decompilation failure
- Android阿里云推送