TrueSTUDIO forSTM32でプロジェクトを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 ++が使われることを期待しています。
CubeMXで生成されたプロジェクトのTrueSTUDIO内でC++を使用できるように設定/手順を変更するにはどうすればよいですか?
[〜#〜] update [〜#〜]
Atollic TrueStudioを削除し、AC6 System Workbenchを削除して、AC6 SystemWorkbenchを再インストールしました。これで、STLを使用していても、AC6 SystemWorkbenchでC++を使用できます。
Atollic TrueStudioを再度インストールすることはあえてしません。これは、おそらく両方ともEclipseを使用しているため、AC6SystemWorkbenchの既存のインストールが壊れてしまうためです。 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つの終了ステータスを返しました
リンカの問題です。ライブラリがcmain関数を探しているのではないかと思います。 C++コンパイラは名前マングリングを実行するため、シンボルはmain
ではなくなります。
main
の署名をextern "C" int main(void)
に変更してみてください
以下の手順に従ってください:-
これがお役に立てば幸いです。