我尝试通过TrueSTUDIO for STM32将项目转换为C++

  • 选择项目(在“C/C++项目”选项卡中)
  • 鼠标右键,选择新建/其他
  • 在C/C++选项卡中,转换为C/C++项目(添加C/C++性质)
  • 按“下一步”时,什么也没有发生(不清楚原因)
  • 当我再次按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。现在,即使在使用STL的情况下,我也可以在AC6 System Workbench上使用C++。

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

    最佳答案

    您提到的错误



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

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

    关于c++ - Atollic TrueSTUDIO : How to convert from C to C++?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49459189/

    10-11 07:08