我正在尝试为简单的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类型?还是应该使用一些指令但我不见了?
答案 0 :(得分:1)
boolean_T以及可能的其他类型(如int_T)在未生成但由MATLAB附带的头文件中定义。通常,定义在tmwtypes.h中,您可以在/ extern / include中找到它。生成的makefile在include目录列表中包括指向此文件的路径,作为编译器的选项。如果不使用生成的生成文件,则需要将这些标头的路径手动添加到编译器选项中。