首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TrueSTUDIO:如何从C转换成C++?

TrueSTUDIO:如何从C转换成C++?
EN

Stack Overflow用户
提问于 2018-03-23 22:37:48
回答 2查看 4.3K关注 0票数 9

我试图将我的项目转换为C++ in TrueSTUDIO for STM32

  • 选择项目(在C/C++ Projects选项卡中)
  • 鼠标右键,选择New/Other
  • 在C/C++选项卡中,转换为C/C++项目(添加C/C++性质)
  • 当按下Next时,什么都不会发生(不清楚原因)
  • 当我再次按Next时,我看到:转换为C/C++项目:向导将C/C++性质添加到选定的项目中,以支持C/C++工具。
  • 我按Finish

当我将main.c改为main.cpp时,生成后会得到以下错误:

代码语言:javascript
复制
startup\startup_stm32f407xx.o: In function `LoopFillZerobss':
C:\Users\Michel\OneDrive\Stm32\Stm32CubeProjects\Fcb1010\Debug/..\startup/startup_stm32f407xx.s:115: undefined reference to `main'
collect2.exe: error: ld returned 1 exit status

似乎仍然使用C(也在命令行(第一部分)中):

代码语言:javascript
复制
arm-atollic-eabi-gcc -o Fcb1010.elf Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.o Drivers\STM ...

我希望使用g++。

如何更改我的设置/过程,以便能够在TrueSTUDIO中为CubeMX生成的项目使用CubeMX?

更新

我删除了Atollic,删除了AC6系统工作台,并重新安装了AC6系统工作台。现在,我可以在C++系统工作台上使用AC6,甚至可以使用STL。

我不敢再次安装Atollic,因为它破坏了AC6 SystemWorkbench的现有安装,可能是因为它们都使用Eclipse。很遗憾,因为我喜欢TrueStudio的一些特性,但是C++对我来说更重要。所以对我来说,再也没有TrueStudio了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-26 10:43:01

你提到的错误

函数'LoopFillZerobss':C:\Users\Michel\OneDrive\Stm32\Stm32CubeProjects\Fcb1010\Debug/..\startup/startup_stm32f407xx.s:115:未定义的对‘startup\startup_stm32f407xx.o’的引用2.exe:错误: ld返回了1个退出状态

是一个链接问题,我怀疑库正在寻找一个c的主要功能。C++编译器执行名称损坏,因此符号将不再是main

尝试将main的签名更改为extern "C" int main(void)

票数 2
EN

Stack Overflow用户

发布于 2018-04-01 11:22:47

请按以下步骤:-

  1. 最好手动将所有.c文件转换为.cpp
  2. 检查每个头文件并更改特定于C语言的宏
  3. 将主函数从C类型更改为C++ (void到int ()),也可以从主函数返回一个值。
  4. 如果您正在使用make文件,请检查是否引用了特定的C依赖项并对它们进行更改。

希望这能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49459189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档