Cannot generate C code from MPC object
Mostra commenti meno recenti
I have a Model Predictive Controller designed in MATLAB. I can generate MEX for it like so:
cfg = coder.config('mex');
cfg.EnableDynamicMemoryAllocation = 'off';
[coredata, statedata, onlinedata] = getCodeGenerationData(nav_mpc);
mexfun = buildMEX(nav_mpc, 'mpcmoveMEX', coredata, statedata, onlinedata, cfg);
However, I can't generate a C or C++ library, like this:
cfg = coder.config('lib');
The error is:
Error using buildMEX
Expected "mexconfig" to be one of these types:
coder.MexCodeConfig
Instead its type was coder.CodeConfig.
Error in mpc/buildMEX (line 105)
validateattributes(cfg,{'coder.MexCodeConfig'},{'scalar'},'buildMEX','"mexconfig"');
Error in run_mpc (line 45)
mexfun = buildMEX(nav_mpc, 'mpcmoveMEX', coredata, statedata, onlinedata, cfg);
According to the documentation here, I should be able to do this:
"You can change the code generation target to C/C++ static library, dynamic library, executable, etc. by using a different set of coder.config settings."
2 Commenti
Ji Lee
il 31 Gen 2024
The cited documentation passage can be misleading. I have passed this observation to the team responsible for the Model Predictive Control Toolbox.
What the documentation intends to say is that the codegen function offered by MATLAB Coder can be used to handle the full range of code generation targets while the buildMEX method of mpc can handle MEX generation. In other words, one would use codegen to generate libraries or executables and buildMex to generate MEX functions. The example code in the documentation passage utilizes buildMex to demonstrate the MEX-specific workflow.
Andy Zelenak
il 31 Gen 2024
Risposta accettata
Più risposte (0)
Categorie
Scopri di più su Code Generation in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!