在keil里用c++编程(1)

本文讲述了如何在C语言环境下使用C++库,如Eigen和Boost,通过在KeilMDK中配置项目、引入头文件、重写target.c文件以及处理内存管理,解决半主机模式等问题,实现C/C++混合编程在STM32平台的应用。
摘要由CSDN通过智能技术生成

做嵌入式开发时,我们对使用c++语言写的库有强烈的需求,比如eigen,boost等,但是通常来说,我们的开发是围绕c语言进行的,怎么把c++的库文件放在c语言环境下进行编译,就是我们需要面对的问题

1.问题来源:需要把一个用cpp语言写的库放在c语言环境下进行编译。

参考:C++ in Keil 使用指南_keil使用c++-CSDN博客

STM32 C++编程系列一:STM32 C++编程介绍-CSDN博客

KEIL / MDK C++支持方法:基于TencentOS-Tiny 工程修改,STM32芯片_keil c++-CSDN博客

主要的思路是到用一个函数把整个c++函数都引导到C环境里。

开始实操

1.用cubemx生成一个基本的项目,启用一个串口,方便我们调试,其他什么都不开。

2.在arm compiler里选择use default complier version6(use default complier version5 也能用,需要在c/c++(AC5)选项卡里加入-cpp11关键字来启用cpp11支持)

3.在c/c++(ac6)里面把c语言版本和cpp语言版本设置成你所需要的版本,我这里选的是c11/cpp14。

 4.引入你所需要的包和相关依赖项

先把源代码引入

 

再把头文件的路径引入。

5.写一个使用了这个库其中的函数的函数, 有点绕口,就是写一个函数,在里面使用你要用的cpp库的函数,并且写出相关的头文件。这个头文件一定一定要用extern“C”关键字包起来,这样才能被正确识别。

记得把头文件的路径引入,具体引入的方法在上一步,不引入的话会找不到头文件。

 6.这时候编译基本上只要配置正确,就没什么error,然后下载入板子调试,会遇到以恶很经典的问题

【 BEAB BKPT 0XAB】,这是因为进入了半主机模式,下面这篇文章有相关的内容

STM32 C++编程系列2.5:让Keil MDK工程支持现代C++特性及填坑_stm32 支持c++-CSDN博客怎么解决这个问题,三个办法,第一如果我们在用纯c代码的时候,我们可以勾选mcriolib,第二,重写target.c文件,第三,我们选择keil官方补丁,上面这个问咋是第三种办法,我们采用第二种办法。

7.重写target.c文件

KEIL / MDK C++支持方法:基于TencentOS-Tiny 工程修改,STM32芯片_keil c++-CSDN博客

我们按照这篇文章来进行改写。

8.如果你的cpp文件所需的内存空间很大,这时候你需要修改堆栈大小,或者使用内存管理,这篇文章讲了一下。到此,你应该就可以在keil种使用c/cpp混合编程了。

STM32 C++编程系列2.5:让Keil MDK工程支持现代C++特性及填坑_stm32 支持c++-CSDN博客

 

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值