Matlab编码器使用boolean_T

时间:2019-01-25 13:06:18

标签: matlab matlab-coder

我正在尝试为简单的Matlab函数生成C代码:

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,我收到以下错误消息:

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 :(得分:1)

boolean_T以及可能的其他类型(如int_T)在未生成但由MATLAB附带的头文件中定义。通常,定义在tmwtypes.h中,您可以在/ extern / include中找到它。生成的makefile在include目录列表中包括指向此文件的路径,作为编译器的选项。如果不使用生成的生成文件,则需要将这些标头的路径手动添加到编译器选项中。