Loading...
 

Zephyr project on STM32

   Zephyr Workbench, a VSCode extension to manage Zephyr on STM32.
It enables users to easily create, develop, and debug Zephyr applications.
Main features:
  • Install host dependencies.
  • Import toolchain and SDK.
  • Create, configure, build and manage apps.
  • Debug STM32.
You can directly download it from the VSCode marketplace
For more details, visit the Zephyr Workbench

System Workbench for STM32


How to create a C++ project ? (Cpp project)

Hi everyone,

I’m trying to do a very simple thing : create a Cpp project on ac6/eclipse.
The same question has already been asked in 2016 but has never been answered...

My base project was written in C but I have a Cpp library to use. I haven’t found any solution to use a Cpp lib in a C project, then I tried to convert my base C project into Cpp. But it doesn’t seem to work. I tried to rename my source files into .cpp but syscall.c doesn’t like it at all and my cpp lib is still red about it.

Where I create a new Cpp project, I get a main.c not a main.cpp, why is that? Is there a solution to get a basic Cpp project from ac6?

Thanks in advance for your help.

France

Hi,

You can either convert your existing C project to C++ (by right click on project then “Convert to C++”), or create a new project by choosing “C++ project” instead of “C project”.

However a C++ project is also a C project and the default main.c is still a C file (as are also the ST-provided libraries); you can just rename it as main.cpp (and correct it as it may not be a valid C++ file if you added incompatible C code). You can also include new C++ files in your project and they will be compiled by the C++ compiler; however, don’t forget to declare the functions that must be called from C code as extern "C"

The main difference is that the linker will use the C++ linker, even if you only include C files; note that if your C++ code must include C-compatible header files, these must, typically in a #ifdef c_plusplus section declare all C functions as extern "C".

For example you can start your C header files by

#ifdef c_plusplus
extern "C" {
#endif
and terminate them by
#ifdef c_plusplus
};
#endif


HTH

Bernard (Ac6)


Thanks Bernard for your answer. It is very helpful.
I cannot know if it works yet because I think I first have to fix my external library issue. I’ll post another question in the forum about it.


 

Newest Forum Posts

  1. reservation car service Seattle by Jamesprede, 10:06
  2. Last day: drone bonus by Danielrug, 2025-04-19 16:55
  3. SPI on Nucleo_STMH533RE by higginsa1, 2025-03-25 07:37
  4. SPI on Nucleo_STMH533RE by royjamil, 2025-03-23 11:31
  5. SPI on Nucleo_STMH533RE by higginsa1, 2025-03-23 09:33
  6. Configuring DMA for ADC in SW? by sam.hodgson, 2025-03-04 12:58
  7. Insightful Perspectives on This Subject by davidsycle, 2025-03-04 05:45
  8. Build a project in "release" mode by info@creosrl.it, 2025-02-20 18:12
  9. Build a project in "release" mode by info@creosrl.it, 2025-02-20 17:05
  10. Build a project in "release" mode by tang, 2025-02-20 10:36

Last-Modified Blogs