Issue to export C++ simulink code - parameter output

1 visualización (últimos 30 días)
Fabrice Jolivet
Fabrice Jolivet el 8 de Ag. de 2019
Respondida: Fabrice Jolivet el 18 de Ag. de 2019
Hello,
I am experiencing difficulties to C++ export Simulink custom block code for a reuse in Qt application.
Currently export only generate "Real_t" parameters when I expect to have "double".
What do I need modify in Simulink to be able to generate C++ readable code.
Thanks in advance for your support,
Fabrice

Respuesta aceptada

Fabrice Jolivet
Fabrice Jolivet el 18 de Ag. de 2019
For the benefit of everyone, please find below Matlab team answer:
"First of all, I would like to make you aware of the proper way to replace the names used in code generation with custom names. In order to do so, you need to open the Configuration Parameters window, then navigate to the section "Code Generation>Data Type Replacement" and then check the box "Replace data type names in the generated code". Upon doing so, you will be able to insert a "Replacement Name" for each "Code Generation Name".
Unfortunately, you are not allowed to insert C keywords in those boxes. For instance, upon trying to insert "double" on the line corresponding to "real_T" (or any other line), the error "double is a C keyword and cannot be used as a replacement type" is shown. After consulting the development team, I have been made aware that there are multiple valid reasons why using C reserved keywords for Data Type Replacement is forbidden. Just as a matter of example, which I provide you informally, some reason is explained here.
Therefore, it looks like you have now two options to workaround this (outside of MATLAB):
  1. You can include the "rtwtypes.h" file (that we generate in the subfolder "slprj\ert\_sharedutils") in your compilation process (via your Qt project file).
  2. You can specify valid names for all your types in the Data Type Replacement pane (as I explained in the previous paragraph), and then "typedef" them in the C++ class (in Qt) that will make use of the generated code.
I would not exclude, as a third alternative option, that you can write a simple script that parses the whole generated source code and substitutes each of occurrence of "real_T" with "double" and the likes.
I hope that this hints can help you achieve what you want, since MATLAB does not offer the feature you described, for good reasons, as I wrote. Hence, I will now mark the case as closed with provided workaround."

Más respuestas (1)

Archit Dhanani
Archit Dhanani el 12 de Ag. de 2019

Categorías

Más información sobre Simulink Coder en Help Center y File Exchange.

Productos


Versión

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by