2 votes

Codeur Matlab utilisant boolean_T

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 ?

2voto

Navan Points 1866

Boolean_T et éventuellement d'autres types comme int_T sont définis dans des fichiers d'en-tête qui ne sont pas générés, mais livrés avec MATLAB. Habituellement, les définitions se trouvent dans tmwtypes.h que vous pouvez trouver dans /extern/include. Le fichier makefile généré inclut un chemin d'accès à ce fichier dans la liste des répertoires d'inclusion en tant qu'option pour le compilateur. Si vous n'utilisez pas le makefile généré, vous devrez ajouter manuellement les chemins vers ces en-têtes aux options de votre compilateur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X