如何建立 stand-alone 的MATLAB 應用程式
方煒、饒瑞佶
在 MATLAB 的 Command Window 中輸入以下語法:
mcc -m test
可以將 test.m 原始碼轉換成 C語言的原始碼並編譯成 test.exe 的可執行檔。
如果 test.m 程式中有用到其他 .m 程式,此時須將所有用到的 .m 程式置於同一目錄,再進行編譯的動作。
安裝C語言編譯器
假設有一個 main.m 的程式需要進行編譯,
由於缺乏適當編譯器,執行編譯指令(mcc)後出現的情況如下圖所示:
編譯前須先安裝C語言的編譯器(下載 )。
使用mbuild進行設定(setup)
編譯器安裝完成後,仍須使用mbuild 指令告知MATLAB 編譯器有關 C編譯器的相關目錄,執行過程如下:
建立 Stand-alone MATLAB 應用程式
完成 C編譯器安裝與mbuild 的設定後,我們可以進行 MATLAB 的 stand-alone 應用程式的編譯。假設有兩個MATLAB 程式,如下:
在MATLAB 的 Command Window 中使用 mcc -m main 指令進行編譯。結果可在MATLAB 的
current 目錄 (如下圖)中
產生幾個檔案,簡列如下:
其中,main.exe 為stand-alone 的應用程式。
主程式(main.m)中有呼叫副程式(mrank.m),編譯器可自動找到所有的副程式檔案,
並產生相同檔名的 .c, .h (main.c, main.h, mrank.c, mrank.h)檔案。另有一個main_main.c 程式
為一個由編譯器產生的 main wrapper。出現兩次main 係由於上例的主程式名稱正好也為 main,如果主程式名稱為 test.m,則此時產生的為 test_main.c。
程式執行
選擇'開始','程式集','附屬應用程式','命令提示字元' (Command Prompt),
輸入完整的path (c:\matlabr11\work\)
與檔案名稱 (main),執行結果如下:
MATLAB 編譯器的限制
mcc 只能編譯函數,如果是 script 則無法編譯,如上例的 main.m 程式中,如果缺乏紅色字的那一行指令,則該程式為 script 而非 function。編譯時出現錯誤訊息如下:
修正方式為在Script M-file程式的首列加一行指令定義為某個函數名稱即可,該函數可以沒有任何參數。
MATLAB程式中若有用到繪圖相關指令,則需要其他的 Graphic Library。
更多mcc與 mbuild的相關說明,請參見 MATLAB 的 online help:在 Command Window 中輸入 help mcc 或 help mbuild 即可