7.3.4 編譯後程序的發佈
無論編譯後產生的是可執行文件,還是動態連接庫,要使它們能夠發佈到別的沒有安裝
MATLAB的計算機上使用,必須在目標計算機上安裝MCR,不能只是簡單地把編譯後產生的文
件複製到目標計算機上。
可以利用MATLAB命令buildmcr來創建可以發佈給最終用戶的MCR安裝文件。buildmcr的功能
是創建一個包含MCR需要的所有文件的ZIP壓縮文件。buildmcr有如下兩種調用方式:
zipfile = buildmcr
zipfile = buildmcr(dirname)
其中返回值zipfile是產生MCRInstaller.zip的完整路徑名。在沒有輸入參數的情況下,
buildmcr會把產生的MCRInstaller.zip保存到地址
$MATLAB/toolbox/compiler/deploy/<arch> /MCRInstaller.zip。
其中$MATLAB代表MATLAB的安裝目錄,<arch>代表不同的計算機架構。比如在Windows上,默
認的MCRInstaller.zip的路徑爲$MATLAB/toolbox/compiler/deploy/win32/
MCRInstaller.zip。
相應地,在Linux上,默認的MCRInstaller.zip的路徑爲$MATLAB/toolbox/compiler/
deploy/glnx86/MCRInstaller.zip。
也可以使用輸入參數dirname來指定MCRInstaller.zip的保存目錄。buildmcr('.')將把產生
的MCRInstaller.zip保存到當前工作目錄。
一般來說,需要發佈的文件有3個:
(1)編譯得到的可執行文件或者庫函數。
(2)CTF文件。
(3)MCRInstaller.zip。
在最終用戶的計算機上,首先需要把MCRInstaller.zip解壓,並把MCR中可執行文件所在目
錄加到系統路徑上,然後就可以使用編譯後的程序了。
注意:MCR不支持在startup.m中使用addpath命令增加搜索路徑。
startup.m是一個可以讓用戶設置一些關於MATLAB運行的個性化設置。如果你在運行MATLAB
編譯器的計算機上使用startup.m來給MATLAB增加一些特別的搜索路徑,那麼發佈的程序運
行時會報錯。必須讓addpath命令只在非發佈情況下才有效。利用isdeployed命令,在
startup.m判斷是否運行相關的命令:
if ~isdeployed
addpath(…)
%其他一些命令
endif
另外,編譯後發佈的程序在運行時需要先把CTF解壓。所以在運行這些程序時需要確保對CTF
文件所在目錄有寫權利。否則,發佈的程序在執行時會報錯。如果編譯後的程序以光盤的方
式發佈,那麼程序必須先複製到硬盤的某個目錄,然後才運行。
資料二:
1、使用matcom方法,但是matcom函數太少,不適合使用。
2、將matlab文件通過命令生成動態鏈接庫dll,在VC程序中調用。(注:與資料一的敘述有
矛盾這處)
3、直接在客戶機上安裝$MATLAB/toolbox/compiler/deploy/win32目錄下的
MCRInstaller.exe程序(83M),就可以了。或者通過matlab命令生成一個CRInstaller.zip
文件,解壓縮到客戶機上,並將動態鏈接庫目錄(??是bin目錄嗎?)添加到PATH環境變
量中。相比之下還是運行MCRInstaller.exe省事一些,雖然比MCRInstaller.zip要大一點。