Я пытаюсь преобразовать свой проект в C ++ в TrueSTUDIO для STM32
Когда ничего не происходит, когда я меняю 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 ++.
Как изменить мои настройки / процедуры, чтобы иметь возможность использовать C ++ в TrueSTUDIO для проекта, созданного CubeMX?
ОБНОВИТЬ
Я удалил Atollic TrueStudio, удалил AC6 System Workbench и переустановил AC6 System Workbench. Теперь я могу использовать C ++ в AC6 System Workbench, даже используя STL.
Я не осмелюсь снова установить Atollic TrueStudio, поскольку он нарушает существующую установку AC6 SystemWorkbench, вероятно, потому, что они оба используют Eclipse. Жаль, поскольку мне понравились некоторые функции TrueStudio, но C ++ для меня важнее. Так что для меня больше нет TrueStudio.
Ошибка, которую вы упоминаете
startup \ startup_stm32f407xx.o: в функции ‘LoopFillZerobss’:
C: \ Users \ Michel \ OneDrive \ Stm32 \ Stm32CubeProjects \ Fcb1010 \ Debug / .. \ startup / startup_stm32f407xx.s: 115: неопределенная ссылка на `main ‘
collect2.exe: ошибка: ld вернул 1 состояние выхода
Есть проблема с компоновщиком, я подозреваю, что библиотека ищет главную функцию c. Компилятор C ++ выполняет искажение имени, поэтому символ больше не будет main
,
Попробуйте изменить подпись вашего main
в extern "C" int main(void)
Пожалуйста, следуйте ниже шагов: —
Надеюсь, это поможет.