Keil在C++环境下添加C文件的BUG(Undefined symbol )

今天在改动keil一个C++环境的工程的时候,添加了一个c文件。并在main函数中调用该C文件的函数。
报错如下在这里插入图片描述

.\Objects\osdk_stm32.axf: Error: L6218E: Undefined symbol cm_backtrace_init(const char*, const char*, const char*) (referred from main.o).
Not enough information to list image symbols.
Not enough information to list load addresses in the image map.

正常遇到Undefined symbol ,一般的错误原因基本上如下

  1. c文件中未定义
  2. 未在工程中添加该c文件

所以,大概意思就是c文件中的函数有问题。可是研究半天,发现并不是这样。
遂想到了这个是c++环境的工程,可能与环境有关,但如果直接添加c环境,c++的文件全部报错。于是查找了Keil中C和C++混合编程方法。方法如下

  1. 新建的C++文件名为xx.cpp和xx.h。

  2. 以前的C文件xx2.c可以右击文件,属性改为C++ Source file。在xx2.h中修改为

    #ifndef XX_H

    #define XX_H

    #ifdef __cplusplus extern “C” {
    #endif

    #ifdef __cplusplus }
    #endif

    #endif

  3. 再有C文件需要调用xx2.c文件中的程序时直接添加xx2.h头文件,调用函数即可,无需修改文件属性。

按照这个方法,修改了 .h文件,完美解决。

".\Objects\osdk_stm32.axf" - 0 Error(s), 0 Warning(s).
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值