matlab 打包封装,matlab中如何封装打包成exe文件
編譯環境:matlab 2007b,winxp
1.設置編譯器:
在確定安裝好Matlab
Compiler后,還需要對Compiler進行適當的配置,方法是在Matlab命令窗口輸入:
Mbuild –setup,
按提示選擇matlab自帶編譯器LCC。
2.將腳本編譯為可執行文件:
如項目文件包含:gui.m, gui.gif, fun1.m。
在此路徑下命令行輸入:mcc –m gui.m,生
成:mccExcludedFiles.log,ReadMe.txt,gui.ctf,gui.prj,gui_main.c,gui_mcc_component_data.c,gui.exe。其中:gui.ctf,gui.exe為脫離matlab環境運行必需的文件。
3.在未安裝matlab的機器上運行可執行程序。
將R22007b\toolbox\compiler\deploy\win32中的MCRinstaller.exe安裝到該計算機上,將生成可執行程序脫離matlab運行所需的函數庫。
將2中生成的gui.ctf,gui.exe拷貝到該計算機同一路徑。運行gui.exe將生成gui_mcr文件夾,包含程序運行所需的庫。至此完成。
4.去除獨立可執行程序運行時的“DOS黑窗口”。
以上生成的exe程序運行時首先彈出一個DOS界面窗口,如果不需要其輸出數據和錯誤信息,可將其去除。
matlba命令行輸入:
cd(prefdir)
edit compopts.bat
此時compopts.bat打開,在文件最后添加:
set LINKFLAGS=%LINKFLAGS% -subsystem
windows
如果程序比較復雜,易出現異常,則不建議去除這個dos窗口以便調試。
另外,這個辦法是適用于你用的編譯器為LCC,如果是其他的,那么所加語句有所不同
Microsoft Visual C/C++:
set LINKFLAGS=%LINKFLAGS% /SUBSYSTEM:WINDOWS
/ENTRY:mainCRTStartup
Borland:
set LINKFLAGS=%LINKFLAGS% -aa
5.遇到某些函數不能使用的問題。
我的程序中用到vpa函數,運行gui.exe出現:undefined method or function
'vpa' for input argument type of
'double'錯誤提示。而gui.m腳本在matlab環境可以運行。
原因:百度搜到的信息為:matlab不支持符號工具箱的編譯。只好避開使用此函數。
方法一:
已有gui.m文件和gui.fig文件
1 在matlab的command窗口中輸入
mcc -B sgl GUI.m
2.將上步生成的文件包括*m 文件和*.fig文件一起考到待運行的機器
此時仍需matlab所必需的動態連接庫。
3. 將
>/extern/lib/win32/mglinstallar.exel拷貝到到待運行機器上
4.在機器上先運行mglinstallar.exe,
然后選擇解壓目錄,將在將在指定目錄下解壓縮出bin和toolbox兩個子目錄,
其中在bin\win32目錄下就是數學庫和圖形庫脫離MATLAB運行所需的所有動態連接庫,共
有37個。可以將這些.dll考入system32, 也可以直接放在應用程序目錄下。
而toolbox目錄則必須與應用程序同一目錄。
方法二:
matlab編程很方便,強大的矩陣運算功能,很多好用的工具箱,但是一般程序都要在matlab環境中運行,能否脫離這個環境打包發布呢,matlab也提供了這樣的工具。
1. 轉化為c/c++程序并編譯為.exe
先驗證mcc是否可用,用matlab中的example驗證即可
建議不用matlab默認的lcc 編譯器(可能有問題),可使用VC6編譯器(按默認路徑安裝)
由于帶有界面,需要圖像庫支持,編譯時應使用命令: mcc -B sglcpp pressure
編譯生成若干c/c++源碼,以及.exe文件、bin目錄中figure菜單條/工具條文件(.fig)等
程序發布需要.exe、bin\、.fig
2. 在未裝matlab的電腦上運行程序需要數學 運行時庫、圖像運行時庫以及用到的工具箱mex文件
前兩者已經在\matlab\extern\lib\win32mglinstaller.exe壓縮包中,將其解壓,并在環境變量path中添加解壓到的路徑
另外若程序中還用到其他工具箱的東西,那么需要將此工具箱中需要的mex文件也一并放在解壓到的路徑,子文件夾位置與matlab中的位置相同
3. 在確保.exe程序可以運行的情況下 可以用setup factory打包發布
以下通過注冊表自動添加path路徑
%--------------------------------------------------------------------------------------
Screen.Next(); -- 進入下一個屏幕
resultDialog = Dialog.Message("注意", "向環境變量中加入matlab數學庫及圖象庫的安裝路徑?",
MB_YESNO, MB_ICONINFORMATION, MB_DEFBUTTON1);
if (resultDialog == IDYES) then --加入安裝路徑
strPath = Registry.Get(HKEY_CURRENT_USER, "Environment", "path",
true);
if strPath ~= "" then
strPath =
String.Concat(strPath, ";");
end?strPathToAdd = SessionVar.Expand("%AppFolder%");
strPathToAdd =
String.Concat(strPathToAdd,"//MATLAB6p5//bin//win32");?-- 如果路徑中無該位置,則加入
if String.Find(strPath,strPathToAdd) == -1
then?strPath =
String.Concat(strPath, strPathToAdd);
Registry.Set(HKEY_CURRENT_USER, "Environment", "path", strPath,
REG_SZ);
end
end
%--------------------------------------------------------------------------------------
方法三:
在網上搜了一個方法,還沒有用過, 貼在這里僅供參考:
一、 完全可以,而且生成的.exe文件可以在沒有安裝matlab的機器上使用,方法嗎---
首先,使用mcc編譯得到.exe文件,具體參數見幫助文件;
其次,將.exe文件及相關資源文件以及一個稱為mglinstaller.exe的軟件包一起拷到別的機器上,運行mglinstaller.exe,并添加環境變量path,即可執行.exe文件
第三,在MATLAB環境,執行命令
mcc?-m?-B?sgl?file.m?或者?mcc -p?-B?sglcpp?file.m?請鍵入help?mcc看幫助。
mcc是在“command?windows”?用的嗎?
只要“mglinstaller.exe”,與.exe文件及相關資源文件就可以了嗎.
還有“添加環境變量path”是path到.exe文件的環境中是吧?
二、 在matlab下的workspace里打comtool,點file-open
project將我們先前建好的comtest.cbl工程文件打開,再點component--package
component就實現了打包,此時到comtest\distrib文件夾里看,生成的comtest.exe就是打包后的解壓程序,雙擊它會解壓出一些文件,再點擊解壓出來的_install.bat就可以實現安裝
三、 如何將gui生成exe ?
已有gui.m文件和gui.fig文件
1 在matlab的command窗口中輸入
mcc -B sgl GUI.m
2.將上步生成的文件包括*m 文件和*.fig文件一起考到待運行的機器
此時仍需matlab所必需的動態連接庫。
3. 將
>/extern/lib/win32/mglinstallar.exel拷貝到到待運行機器上
4.在機器上先運行mglinstallar.exe,
然后選擇解壓目錄,將在指定目錄下解壓縮出bin和toolbox兩子目錄,其中在bin\win32目錄下就是數學庫和圖形庫脫離MATLAB運行所需的所有動態連接庫,共有37個。可以將這些.dll考入system32,
也可以直接放在應用程序目錄下。而toolbox目錄則必須與應用程序同一目錄。
5.大功告成。
總結
以上是生活随笔為你收集整理的matlab 打包封装,matlab中如何封装打包成exe文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 流程图的会签、或签、转审、加签、一票否决
- 下一篇: 在 JavaScript 中为任何表格添