C++ LNK 2001 LNK 2019 LNK 2028 LNK 2029链接错误
2016-03-03 23:26
351 查看
C++并不是一个实现整体结构比较优良的语言。在写代码的过程中,很多的精力并不是在程序的结构和算法上,而是面对各种奇葩的错误问题。
多文件的C++代码经常容易造成链接错误,折腾几个晚上,将常见的原因总结如下:
1.未按顺序引用文件
2.未引入编译所需的连接库即lib文件
3.未使用#pragma once造成文件被多次编译
4.工程内函数或变量不存在
1,只声明没定义。
2,声明和定义的函数参数列表不一致。
3,函数或变量拼写错误。
5.函数或变量所在的文件没有被正确编译
1,所在的文件没有被添加到工程中。
2,函数或变量的定义放在头文件,但是该头文件并没有被任何一个cpp文件引用,注意:这种情况只会出现入口函数的链接错误。
4,预处理宏或条件编译导致函数或变量没有被正确编译。
5,如果是内联(inline)函数,必须在需要用它的每个编译单位里定义,因此定义只能放在头文件中,不可以放在CPP文件中。
6.模板类的定义和实现需都放在头文件中
若以上仍没有解决问题,可以参考msdn官方文档
多文件的C++代码经常容易造成链接错误,折腾几个晚上,将常见的原因总结如下:
1.未按顺序引用文件
2.未引入编译所需的连接库即lib文件
3.未使用#pragma once造成文件被多次编译
4.工程内函数或变量不存在
1,只声明没定义。
2,声明和定义的函数参数列表不一致。
3,函数或变量拼写错误。
5.函数或变量所在的文件没有被正确编译
1,所在的文件没有被添加到工程中。
2,函数或变量的定义放在头文件,但是该头文件并没有被任何一个cpp文件引用,注意:这种情况只会出现入口函数的链接错误。
4,预处理宏或条件编译导致函数或变量没有被正确编译。
5,如果是内联(inline)函数,必须在需要用它的每个编译单位里定义,因此定义只能放在头文件中,不可以放在CPP文件中。
6.模板类的定义和实现需都放在头文件中
若以上仍没有解决问题,可以参考msdn官方文档
相关文章推荐
- 动态内存分配(c语言)
- [C++11]_[初级]_[unique_ptr的使用场景]
- [C++11]_[初级]_[unique_ptr的使用场景]
- c、OC、C++的三种预处理功能
- 嵌入式C语言常见面试题分析
- C语言的结构体和C++结构体的区别
- 1097. Deduplication on a Linked List (25)
- 重学C++ (十二) 模板特化和偏特化
- C++中虚函数功能的实现机制
- 面向对象程序设计-复习C++
- 利用C语言结构体模拟一个简单的JavaBean
- C语言结构体赋值2
- C语言结构体的引入
- 1096. Consecutive Factors (20)
- Problem G: C语言习题 n个数逆序
- c++中的字节对齐分析
- DSP 2812: 使用C++封装SCI
- Problem E: C语言习题 矩形法求定积分
- 同样简单的选择排序算法
- C++学习笔记53——纯虚函数与继承中的容器