Keil-显示错误XXX.axf: Error: Undefined symbol xxx (referred from xxxx.o).

MKD 报错:
linking…
LCD.axf: Error: Undefined symbol adcx (referred from adc.o).
LCD.axf: Error: Undefined symbol GetFlashCnBuf (referred from adc.o).

解析:Undefined symbol adcx,翻译过来就是:adcx 这个符号没有定义。
随后的小括号告诉你了,是在 adc.o 这个文件里面被提及的。
这个.o文件在工程里面并没有,它是一个在编译的时候根据.c或.s文件生成的。所以我们只需要找到工程里面的.s或者.c即可,这里对应这个名字的就是 adc.c了。

因为adc.c文件中调用了adcx没有定义,
解决办法:
(1)在外部.c文件中定义adcx;
(2) 把adc.c文件中关于adcx的部分注释掉;

当你遇到"Factorytesting.axf: Error: L6218E: Undefined symbol itoa (referred from usart.o)"这类错误时,它意味着编译器找不到名为`itoa`的符号,这通常与库函数有关。`itoa`是一个用于将十进制数转换为字符串的函数。 解决这个问题的步骤如下: 1. **确认库依赖**[^2]: 首先,检查你的代码中是否有显式或隐含地使用了`itoa`函数。如果在代码中直接调用了,可能是忘记包含了相应的头文件(如`stdio.h`),因为`itoa`通常在标准输入输出头文件中声明。 ```c #include <stdio.h> // 如果没有包含这一行,可能需要添加 ``` 2. **链接相应的库**[^1]: 如果`itoa`是从某个库中引入的,确保在编译时已经链接了这个库。例如,如果你使用的是C++,可能是`<cstdlib>`库;如果是C,可能是`<stdlib.h>`。确保在项目设置或构建脚本中正确指定了所需的库。 ```c // C++示例 gcc myprogram.cpp -lstdc++ // 或者在Keil中添加库 Add Library -> stdlib.lib or cstdlib.lib ``` 3. **头文件包含顺序**: 确保你在使用`itoa`之前正确地包含了包含该函数的头文件。如果在其他库或模块中定义了`itoa`,确保包含的顺序不会导致冲突。 4. **源码查找**: 检查`usart.o`文件及其依赖的源代码,看看是否确实有`itoa`的实现或者是否误拼写或漏掉了包含语句。 5. **清理并重新编译**: 清除编译后的中间文件(如.obj或.objd)以及可执行文件,然后重新编译以确保一切都在最新的状态。 如果以上步骤都尝试过还是存在问题,那么可能需要查看相关的文档或社区论坛,寻求特定于你的库或工具链的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值