MATLAB 编译器的使用
MATLAB 编译器(相应命令为 mcc)可生成独立应用程序、库、COM 对象、Excel 插件,
218 MATLAB 实用教程
它根据目标类型生成合适的包装器文件。包装器文件包含编译后的应用程序和可执行对象类
型之间的接口,具有下面一些功能。
z 完成包装器指定的初始化和终止运行工作。
z 定义包含路径信息、加密密匙和 MATLAB 组件运行时(MCR)所需其他信息的数组。
z 提供传递接口函数。
MATLAB 编译器生成的组件技术文件(CTF)与最后生成的目标类型(可执行程序或库)是
独立的,包装器文件提供了与目标类型的必要接口。
1.环境配置
mcc 命令具有将 m 文件编译生成 exe 文件或 cpp 文件等许多编译功能,使用 mcc 命令之
前必须进行环境配置。mbuild 是 MATLAB 提供的常见编译命令,在命令窗口输入命令“mbuild
- setup”完成配置,配置时第一个问题可选“n”,编译器可选用“Microsoft Visual C/C++ version
6.0”。mex 的配置将在 11.5 节中讲述。
2.mbuild 命令
使用命令 mbuild 可对已有 C 文件或 C++文件进行编译,编译生成的 obj 文件可直接双击运
行。比如,要对文件 good.c 和 good.cpp 进行编译,可在命令窗口分别输入命令“mbuild – c good.c”
和“mbuild – c good.cpp”。
3.mcc 命令
使用 mcc 命令可生成独立可执行文件或 C 共享库。比如,根据文件 file1.m 和 file2.m 生
成独立可执行文件使用命令“mcc – m file1.m file2.m”,而根据文件 file1.m 和 file2.m 生成 C
共享库使用命令“mcc – l file1.m file2.m”。其他命令可参阅 MATLAB 自带的帮助文档。
4.使用实例
下面结合例子说明独立应用程序的生成方法。
(1)编辑 m 文件
用 MATLAB 程序编辑绘图程序 mytest.m,代码如下。
function mytest() % 定义函数
x=[0,1470,2205,2940,3675,4410,5145,5880,6615,7350];
%定义变量 x(静载曲线横坐标)为一维数组并赋值
y=[0.00,1.13,1.98,2.95,4.12,5.63,7.26,9.15,11.43,14.23];
%定义变量 y(静载曲线纵坐标)为一维数组并赋值
plot(x,y,\'*\',x,y,\'k-\') %绘制曲线,星号显示数据点
grid on; %坐标分格线
axis ij;
% 定义坐标原点左上角,横坐标值向右增大,纵坐标值向下增大
xlabel(\'荷载(kN)\'); % 定义 X 轴名
ylabel(\'位移(mm)\'); % 定义Y轴名
title(\'荷载-位移曲线\'); % 定义图名
axis square; % 图形设置为方形
axis on; % 显示坐标轴上标记、格线和单位标志
uiwait(msgbox(\'静载曲线绘制完毕\')); % 弹出消息对话窗口
close
将 mytest.m 文件保存在指定目录(如 E:\matlab_example\mytest),同时,将工作目录选
为该目录。在命令窗口执行命令“mcc -m mytest.m”后,将新增文件夹 mytest_mcr 及
mytest_mcc_component_data.c、mytest_main.c、mytest.ctf、mytest.exe 等相关文件。
第 11 章 编译器与外部接口 219
(2)测试应用程序
运行上述 mytest.exe 文件,弹出运行结果,如图 11-1 所示。
图 11-1 应用程序运行结果
(3)分发应用
MATLAB 编译器生成的独立应用程序可分发到其他机器(目标机器)运行(两台机器的
操作系统必须相同),操作步骤如下。
Þ 执行命令buildmcr,生成MATLAB组件运行时(MCR)库文档,MCRInstaller.zip将保
存在<matlabroot>/toolbox/compiler/deploy/win32 目录下(<matlabroot>为MATLAB7 安
装目录,下同),该目录下还有文件MCRInstaller.exe和unzip。
Þ 将下列文件打包并分发到目标机器指定目录:MCRInstaller.zip(Linux下MCR库文
档)、MCRInstaller.exe(Windows下自解压MCR库工具)、unzip(Linux下文件
MCRInstaller.zip