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

做嵌入式开发时,我们对使用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博客

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/610479.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“我哭死!用ChatGPT完成的硕士论文被评不及格……”

我隔壁专业用ChatGPT写的论文被老师判不及格了,大家还是慎用吧! 匿名 自从去年11月份ChatGPT面世以来,因为它天然适合撰写学术论文,越来越多的同学开始使用它辅助论文写作。 学习写作有所谓的鲁迅体、莫言体、余华体,但…

【已解决】VMware Horizon Client: 无法建立安全加密链路连接

文章目录 问题原因解决方法方法1:在HTTPS拦截中添加VMware忽略列表 (推荐)方法2: 只拦截 浏览器进程的请求 / 取消 HTTPS 拦截(如果没有拦截HTTPS的必要 / 只针对浏览器请求,可以使用此方法) 当前使用mac 编辑&#xf…

差分数组加前缀和

暴力 #include <bits/stdc.h> using namespace std; char arr[(int)1e5*25]; //要强制转换为int int main() {//cout << (char)(a7);long long len0,op0;cin >> len >> op;cin >> arr; //cout << op;//cout << arr;int inx[(int)…

网络与通信-路由协议及基础配置

网络协议之路由协议 静态路由&#xff1a; 明细静态 默认静态 动态路由&#xff1a;&#xff08;可以自动去环&#xff09; RIP 十几台或几十台 &#xff08;维护上一代人搭建的网络&#xff09; OSPF 300台 &#xff08;最短路径算法&#xff09; ISIS 1200台 BGP…

为什么要纯C语言手搓GPT-2,Karpathy回应网友质疑

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 几天前&#xff0c;前特斯拉 Autopilot 负责人、OpenAI 科学家 Andrej Karpathy 发布了一个仅…

matrix-breakout-2-morpheus 靶机渗透

信息收集&#xff1a; 1.nmap存活探测&#xff1a; nmap -sn -r 192.168.10.1/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-06 12:13 CST Nmap scan report for 192.168.10.1 Host is up (0.00056s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap…

深入理解图形处理器(GPU):加速人工智能和大数据计算的引擎

文章目录 1. 什么是GPU&#xff1f;2. GPU的工作原理3. GPU的应用领域4. GPU与CPU的比较参考与推荐 前言&#xff1a; 图形处理器&#xff08;GPU&#xff09;不再仅仅是用于图形渲染的硬件设备。如今&#xff0c;GPU已经成为加速人工智能、大数据计算和科学研究的关键引擎。本…

XAI有什么用?探索LLM时代利用可解释性的10种策略

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 你是否也好奇&#xff0c;在大模型时代&#xff0c;可解释性人工智能技术&#xff08;XAI&am…

python使用概率算法模拟寻找伴侣

对于模拟寻找伴侣的问题&#xff0c;人在特定时期内能够遇见的异性是有限的&#xff0c;假设在某段时期内能够遇见的异性人数是n&#xff0c;那么问题在于在不能全面对n位候选人进行评估的情况下&#xff0c;以最大概率选中最好的那位。 假设n位候选人的水平用n个不同的数值表…

php-redis windows ,pecl 已经不维护了,解决方案:php 8.2 | 8.3+ redis extension windows

从论坛上pecl 已经不维护了&#xff0c;直接让大家到ci 去下载 https://stackoverflow.com/questions/76496488/redis-dll-not-found-for-php8-2/76496489#76496489 让我们找最新的一次commit &#xff0c;然后又action 构建&#xff0c;再下载&#xff0c;这样的话也好&#…

PUBG绝地求生更新后无法启动/更新后卡顿?3个解决方法分享

在绝地求生中&#xff0c;团队协作也是非常重要的一点。咱们可以运用strong标签来着重“团队协作”。与队友紧密配合、彼此援助&#xff0c;一起拟定战术和战略&#xff0c;将会大大提高在游戏中获得成功的几率。在绝地求生中获得成功并不简单&#xff0c;但只需咱们把握了一些…

计算机服务器中了faust勒索病毒怎么办?Faust勒索病毒解密工具流程步骤

对于现在的众多企业来说&#xff0c;计算机服务器成为大家工作中不可或缺的工具&#xff0c;利用计算机服务器可以更好地开展各项工作业务&#xff0c;企业计算机服务器也大大提升了企业生产运营效率。然而&#xff0c;网络技术的发展也为企业的数据安全带来威胁&#xff0c;近…