最近学习嵌入式开发,因项目框架较大,部分内容改动,在将别人单独写的串口读取数据源码添加到工程中后,编译出现以下问题:

通过查询资料,都是在说未定义引下的错误。

回头检查项目,源文件加入到工程,头文件也已包含。而后多次尝试编译,未果;关闭重启,亦未果。。。

询求正点原子技术支持,远程协助,还是未能解决。。。

编译通不过,调试无法进行,苦恼一天。。。。

后来,多次将源文件多项目中删除后重新添加,无意间发现,项目中的源文件既有*.c,也有*.cpp,也就是说有的是用C语言写的,有的是用C++写的程序。于是乎,上网查了下在keil中两种语言的使用区别,发现keil工程同时有c文件和CPP文件时,c文件的函数在cpp文件中是无法直接访问的。

也就是说,正常的include“”xxx.h“”那肯定是不行的,编译会提示说未定义错误。原来如此!!!我的工程是C++文件调用C文件中的函数,所以即使源文件添加了,也出现未定义错误。根据网上提供的解决方法,将

#include "XXX.h"  改为

extern "C"

{

#include "XXX.h"

}

然后再编译, 0 Error(s), 0 Warning(s).  OK !!

总结:

1.一般情况下,Error: L6218E: Undefined symbol 若是由于未定义引起的错误,可以根据错误提示定位到相应的问题行,然后将相应的函数进行定义即可,网上大多也都是针对这种情况下的未定义错误进行解答;

2.如未将.c/.cpp源文件添加到工程中,也会出现此错误;

3.若工程中已经添加了源文件,也包含了相应的头文件,依然出现错误 Error: L6218E: Undefined symbol ,则检查是否是由于在Keil中混用C和c++引起的。这种情况下,除了像上述那样在源文件中包含头文件外,还可以在头文件中使用

#ifdef __cplusplus    
extern "C" {         
#endif

void  xxxxx(xxx)

#ifdef __cplusplus
}
#endif

这样的条件编译,在源文件中直接使用#include ""包含头文件亦可。

keil 5 : Error: L6218E: Undefined symbol 问题解决方法小记相关推荐

  1. MDK编译出现*.axf: Error: L6218E: Undefined symbol 问题解决方法

    本文参考此贴写成,原帖链接 http://blog.csdn.net/yx_l128125/article/details/9231385 在使用MDK编译工程时出现了如下错误,test.axf: E ...

  2. Keil 5出现Error: L6218E: Undefined symbol解决方法

    Keil 5出现Error: L6218E: Undefined symbol解决方法 参考文章: (1)Keil 5出现Error: L6218E: Undefined symbol解决方法 (2) ...

  3. Keil 5下出现Error: L6218E: Undefined symbol Delay(unsigned) (referred from main.o).的解决方法

    问题背景: 今天在给stm32f407vgt6点灯时,想实现循环闪烁,于是想从以前的工程中移植一个delay延时函数,移植后编译时发现出现错误: Error: L6218E: Undefined sy ...

  4. [STM32问题解决(1)]一类问题的解决办法——编译错误:XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o).

    目录 1 问题说明 1.1 问题回顾 1.2 寻找解答所犯的错误 2 解决办法(试用于一系列问题) 2.1 重审问题 2.1.1 Undefined symbol xxx.c 2.1.2 referr ...

  5. keil 5 报错记录:..\OBJ\templiate.axf: Error: L6218E: Undefined symbol PcdHalt (referred from rc522.o).

    keil 5 报错记录:-\OBJ\templiate.axf: Error: L6218E: Undefined symbol PcdHalt (referred from rc522.o). 先来 ...

  6. keil错误提示Error: L6218E: Undefined symbol

    出现Error: L6218E: Undefined symbol有一下几种可能 一,.C中未定义 二,.H中未引用 三,未包含含有该类型的.H文件 四,在keil中未添加.C或.H文件到工程

  7. HAL库 编译错误:XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o)的可能原因之一及解决方法

    我在学习STM32 HAL库版本时遇到了这种编译问题 由于是刚开始学习STM32代码跟例程是一样的,所以代码不可能出错.我去网上寻找答案看到了 (7条消息) (已解决)STM32报错Error: L6 ...

  8. Keil编译下出现axf: Error: L6218E: Undefined symbol

    摘要 使用STM32F0的主控芯片,Keil编译环境,编译能通过,链接出现axf: Error: L6218E: Undefined symbol 故障 解决措施一 stm32f0xx_hal_con ...

  9. [keil] Error: L6218E: Undefined symbol __aeabi_assert (referred from xxx.o).

    文章目录 一.原因:引用#include <assert.h> 断言功能缺失 二. 官方解答 (1) 症状 (2)导致 (3)解决 1. 使用µVision中的Keil::ARM_Comp ...

最新文章

  1. leetcode算法题--复制带随机指针的链表★
  2. node执行cmd命令方法
  3. 红帽集群套件RHCS
  4. [深度学习] PyTorch-BigGraph 使用
  5. [Oracle]行列转换(行合并与拆分)
  6. 给hadoop 2.7.1 定制树莓派参数
  7. [转]ASP.NET MVC IOC 之AutoFac攻略
  8. jmeter的如何设置headers
  9. 标记集合 java编译_深入理解Java虚拟机读书笔记-java编译期和运行期优化
  10. 《CSS权威指南》读书笔记
  11. Unity3d打包程序报错NotSupportedException: Encoding 437 data could not be found.
  12. Opencv -- 13像素值统计及平均值和方差的意义
  13. linux 单网卡绑定两个ip
  14. 迁移过程中出现报错:无法解析的成员访问表达式[USERENV]
  15. 关于《算法的乐趣》历法一章演示程序错误的说明
  16. mongodb每秒写入量_OPPO百万级高并发MongoDB集群性能数十倍提升优化实践
  17. 2 理解网络协议的工作模式
  18. 计算机网络相关论文目录怎么弄,如何给你的标书、论文编页码和目录-论文页码设置...
  19. 为什么聊天软件一般采用UDP协议
  20. 淘宝淘金币助手,自动完成淘金币任务,蚂蚁庄园和蚂蚁森林,天猫领红包和收取能量

热门文章

  1. maven打包后运行:Error: Could not find or load main class ‐jar
  2. 转载 电子工程师的程序人生历程
  3. 每日一题 两个水桶问题
  4. fatal error: ***.h: No such file or directory
  5. 常见tcp/ip网络攻击方式分析
  6. mac上MAMP的各种坑
  7. jdk8 stream
  8. Substance Painter 的一些玩法笔记
  9. MATLAB | 三个趣的圆相关的数理性质可视化
  10. 基于JavaSDK调用FISCO BCOS 区块链