Matlab Coder используя boolean_T - PullRequest
       18

Matlab Coder используя boolean_T

0 голосов
/ 25 января 2019

Я пытаюсь сгенерировать код C для простой функции Matlab funciton:

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

Однако в сгенерированном коде используется переменная типа boolean_T, но она нигде не объявлена. Мне кажется, что заголовок с его объявлением не был включен. Скрипт для генерации кода:

config_obj = coder.config('exe');
config_obj.GenCodeOnly = 'on';
codegen -config config_obj myfun

При вызове make с пользовательским make-файлом я получаю следующие сообщения об ошибках:

error: unknown type name 'boolean_T'
error: 'false' undeclared (first use in this function)
error: 'true' undeclared (first use in this function)

Я могу попросить один файл и добавить свой код с помощью:

config_obj = coder.FilePArtitioningMethod('SingleFile');
config_obj.CustomSourceCode = ['typedef unsigned int boolean_T;',newline,...
                               '#define true 1U',newline,...
                               '#define false 0U'];

Это позволит мне правильно скомпилировать код, но это дурацкое решение, так как я не хочу генерировать отдельный файл, а добавленный источник не входит в каждый файл по мере необходимости.

Есть ли способ избежать использования типа boolean_T? Или есть какая-то директива, которую я должен был использовать, но мне не хватает?

1 Ответ

0 голосов
/ 25 января 2019

boolean_T и, возможно, другие типы, такие как int_T, определены в заголовочных файлах, которые не создаются, но поставляются с MATLAB.Обычно определения находятся в tmwtypes.h, который вы можете найти в / extern / include.Сгенерированный make-файл включает путь к этому в списке включаемых каталогов в качестве опции для компилятора.Если вы не используете сгенерированный make-файл, вам нужно будет вручную добавить пути к этим заголовкам в опции вашего компилятора.

...