Common C++ Error Messages : Undefined reference

本文深入解析C++编译过程中常见的“未定义引用”错误,探讨其触发原因,包括函数声明与定义不匹配、链接问题等,并提供解决策略。

Common C++ Error Messages : Undefined reference

简述

我们编译代码时经常会遇到这个错误, 其实这个错误是链接器触发的. 为了解决这个问题我们需要知道一些基础

编译基础

我们的代码编译大致分2部. 编译和链接

通常我们的源代码是分开编译的, 每一个源代码编译成为目标码(后缀为.o或.obj). 但是每个.o或.obj文件对它之外的情况是不知道的. 这就是链接器接手的部分. 查看所有的目标码文件, 计算出每个函数的地址, 然后输出最后的二进制文件.

哪些情况会触发该错误

  1. 没有定义

只提供了函数声明, 但是没有函数定义, 这个数最常见的错误

  1. 错误的定义

声明和定义不一致. 有些编译器在编译时就会报警或按错误处理

  1. 没有链接到目标文件或库文件

  2. 调用规则不一致

这个比较少见, 常见于C和C++混合的时候. C++调用C函数的时候也会报该错误, 这是因为C++为了支持函数重载,会对函数名进行混淆操作. 因此需要加extern "C"处理.

总结

总之该错误总结起来就是: 链接器找不到定义.

遇到这种错误按照上述常见规则来对应检查一般都能解决.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值