Atollic TrueSTUDIO:如何从C转换为C ++?

时间:2018-03-23 22:37:49

标签: c++ stm32 truestudio

我试图通过

将我的项目转换为TrueSTUDIO for STM32中的C ++
  • 选择项目(在C / C ++项目标签中)
  • 鼠标右键,选择新建/其他
  • 在C / C ++标签中,转换为C / C ++项目(添加C / C ++性质)
  • 按下Next时,没有任何反应(不清楚原因)
  • 当我再次按下Next时,我看到:转换为C / C ++项目:向导将C / C ++ Nature添加到所选项目中以启用它们的C / C ++工具支持
  • 我按完了

没有任何反应,当我将main.c更改为main.cpp时,构建后出现以下错误:

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(也在命令行中(第一部分):

arm-atollic-eabi-gcc -o Fcb1010.elf Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.o Drivers\STM ...

我希望能使用g ++。

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

更新

我删除了Atollic TrueStudio,删除了AC6 System Workbench,并重新安装了AC6 System Workbench。现在我可以在AC6 System Workbench上使用C ++,甚至使用STL。

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

2 个答案:

答案 0 :(得分:3)

您提到的错误

  

startup \ startup_stm32f407xx.o:在函数'LoopF​​illZerobss'中:   C:\ Users \ Michel \ OneDrive \ Stm32 \ Stm32CubeProjects \ Fcb1010 \ Debug / .. \ startup / startup_stm32f407xx.s:115:未定义引用`main'   collect2.exe:错误:ld返回1退出状态

是链接器问题,我怀疑该库正在寻找一个c main函数。 C ++编译器执行名称重整,因此符号将不再是main

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

答案 1 :(得分:1)

请按照以下步骤操作: -

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