J'essaie de générer du code C pour une simple fonction Matlab :
function[] = myfunc()
%#codegen
fprintf('Executing myfun\n');
fid = fopen('file_created_by_myfun.txt','w');
fwrite(fid,'This is written by myfun upon execution');
fclose(fid);
end
Cependant, dans le code généré, une variable de type boolean_T est utilisée mais n'est déclarée nulle part. Il me semble qu'aucun en-tête avec sa déclaration n'a été inclus. Le script pour générer le code est :
config_obj = coder.config('exe');
config_obj.GenCodeOnly = 'on';
codegen -config config_obj myfun
En appelant make
avec un makefile personnalisé, j'obtiens les messages d'erreur suivants :
error: unknown type name 'boolean_T'
error: 'false' undeclared (first use in this function)
error: 'true' undeclared (first use in this function)
Je peux demander un fichier unique et ajouter du code personnalisé avec :
config_obj = coder.FilePArtitioningMethod('SingleFile');
config_obj.CustomSourceCode = ['typedef unsigned int boolean_T;',newline,...
'#define true 1U',newline,...
'#define false 0U'];
Cela me permettra de compiler le code correctement, mais c'est une solution médiocre, car je ne veux pas générer un seul fichier, et la source ajoutée n'est pas incluse dans chaque fichier comme il se doit.
Existe-t-il un moyen d'éviter l'utilisation du type boolean_T ? Ou y a-t-il une directive que j'aurais dû utiliser mais que j'ai oubliée ?