Stateflow use custom C code, while generating C++ using Embedded coder

4 次查看(过去 30 天)
Hi, I'm using Stateflow inside simulink. I used some C functions as custom code using this article, and also I want to generate a C++ code based on my model and chart using Embedded Coder. The code generates fine, but it can not be compiled because of undefined reference linker error.
After some investigation, I found that there is no extern "C" guard for C header related to custom code in the C++ header of the generated code. After I added extern manually, linker error fixed.
My question, is about some configs or checkbox to use and having C custom code, while generating C++ code (embedded coder).
thanks

采纳的回答

Yash Sharma
Yash Sharma 2024-6-24
Hi Jafar,
To integrate C custom code with C++ code generation in Simulink using Embedded Coder, you can configure your model and custom code settings to ensure proper linkage. Here are the steps you can follow:
  1. Specify Custom Code in Model Configuration:
  • Open your Simulink model.
  • Go to Model Settings by clicking on the gear icon or using the menu Modeling > Model Configuration Parameters.
  • Navigate to Code Generation > Custom Code.
  • In the Header file field, add your custom C header file(s).
  • In the Source file field, add your custom C source file(s).
2. Add extern "C" Guards Manually: Since you have already identified that adding extern "C" guards manually works, you can continue doing this. However, you can automate this process by modifying your custom header files. Wrap your function declarations in extern "C" guards like this:
#ifdef __cplusplus
extern "C" {
#endif
// Your C function declarations
void myFunction();
#ifdef __cplusplus
}
#endif
3. Use coder.cinclude for Custom Headers: If you are using MATLAB Function blocks or Stateflow charts, you can use the coder.cinclude directive to include your custom headers. This ensures that the headers are included properly during code generation:
coder.cinclude('my_custom_header.h');
Please find attached links to documentation that may be helpful for your implementation.
Hope it helps!

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Simulink Coder 的更多信息

产品


版本

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by