要编译S-Function的源文件的话,需要安装一个编译器,这里我使用的是mex,体量比较小
编译方法:
1.在MATLAB中将工作路径切换为.c文件所在的空间
2.比如我要编译的源文件文件名为send.c,编译指令为mex "send.c",生成可执行文件
如果源文件没有错误的话,就不会报错,否则会在命令窗口提示错误
当我们需要在程序中引入第三方库时
编写build.m文件
mex('-I../References/common/include/',...
'-I../References/component/trans/src/',...
'-I../References/component/trans/include/',...
'-I../References/component/syscfg/include/',...
'-I../References/component/pwm/include/',...
'-I../References/component/pwm/src/',...
'-I../References/thirdparty/cjson/',...
'SetUp.c' ,...
'../References/common/utils.c',...
'../References/component/pwm/src/pwm.c' ,...
'../References/component/syscfg/src/syscfg.c',....
'../References/component/trans/src/trans.c',...
'../References/thirdparty/cjson/cJSON.c',...
);
这里分析一下文件内容
-I../References/common/include/',...
这句话是指出头文件所在的目录, ...是换行符
'SetUp.c' ,...
这个是我们要编译的文件的名字
'../References/common/utils.c',...
要编译的其他.c文件的文件路径
这里路径最好都使用相对路径,如果文件位置发生了移动也可正常运行
在工作窗口运行build文件,就完成了编译。
常见问题
1.执行编译的时候显示文件被锁定
原因是Simulink还在执行。