ert static function declaration when using newer versions of matlab

2 Ansichten (letzte 30 Tage)
martin a
martin a am 19 Apr. 2023
Kommentiert: martin a am 3 Sep. 2024
Hello, I am using a custom tlc file that was based off of ert.tlc from an older version matlab. The custom code had worked fine through multiple matlab versions and I can confirm it was ok up through version 2018b but is now failing when I attempt to use it with 2022b (sorry, I have no info with respect to versions in between). The code itself gets linked into a larger project but now errors out during the link due to the static declaration. I was able maunally fix the code as shown below but really need a better solution.
Code produced by RTW
/* Real-time model */
static RT_MODEL_tx2_T tx2_M_;
RT_MODEL_tx2_T *const tx2_M = &tx2_M_;
Hand modified after error
/* Real-time model */
RT_MODEL_tx2_T tx2_M_;
RT_MODEL_tx2_T *const tx2_M = &tx2_M_;
Link is now successful
Seems simple but the hand mod is not practical to do regularly for this apllication. Are there any settings or tlc files I should be looking at to eliminate the static declaration?
Thank you
  1 Kommentar
martin a
martin a am 19 Apr. 2023
I have found the tlc file that writes this code but I'm not seeing a way to disable while still getting the same style function call.
.\R2022b\rtw\c\tlc\mw\formatparam.tlc
line 593-594
%assign definition = ...
"static %<::tSimStructType> %<modelSS>_;"

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Ayush
Ayush am 1 Sep. 2024
Hi Martin,
It seems that the issue you're facing is related to the static declaration in your custom TLC file. Starting from MATLAB R2019a, the code generation process has been updated, which might be causing the error you're experiencing. To eliminate the static declaration, you can try modifying the TLC file by removing the "static" keyword from the declaration of tx2_M_. Here's an example of how the modified code should look:
/* Real-time model */
RT_MODEL_tx2_T tx2_M_;
RT_MODEL_tx2_T *const tx2_M = &tx2_M_;
By removing the "static" keyword, you should be able to successfully link your code without any errors.
If modifying the TLC file doesn't solve the issue, you can also check if there are any specific code generation settings that might affect the static declaration. You can review the code generation options in the Configuration Parameters dialog in MATLAB.
  1 Kommentar
martin a
martin a am 3 Sep. 2024
Thanks for the answer but the real question was around getting control over the static declaration during the build. I never ended up finding an option that allowed me to fix this directly without modifying a core tlc file. I was trying to avoid that because it would likely cause further issues in a later matlab release.
In the end, I managed to fix this using the ert_make_rtw_hook.m file and having it remove the "static" text before compiling took place.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Simulink Coder finden Sie in Help Center und File Exchange

Tags

Produkte


Version

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by