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

Atollic TrueSTUDIO: How to convert from C to C++?

我尝试通过

在 TrueSTUDIO for STM32 中将我的项目转换为 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++。

如何更改我的 settings/procedure 以便能够在 TrueSTUDIO 中为 CubeMX 生成的项目使用 C++?

更新

我删除了 Atollic TrueStudio,删除了 AC6 系统 Workbench,然后重新安装了 AC6 系统 Workbench。现在我可以在 AC6 系统中使用 C++ Workbench,甚至可以使用 STL。

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

您提到的错误

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 main函数。 C++ 编译器执行名称修改,因此符号将不再是 main.

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

请按照以下步骤操作:-

  1. 最好手动将所有 .c 文件转换为 .cpp
  2. 检查各个头文件,修改C语言特有的宏
  3. 将主函数从 C 类型更改为 C++(将 void main 更改为 int main())还有 return 来自主函数的值。
  4. 如果您使用的是 make 文件,请检查是否引用了特定的 C 依赖项并进行更改。

希望这会有所帮助。