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解壓工具)、mytest.ctf(組件技術文件)、mytest.exe(應用程序)。
(4)在目標機器上安裝和運行