winggundam
Would you like to react to this message? Create an account in a few clicks or log in to continue.

如何將matlab gui文件編輯成exe可執行文件

向下

如何將matlab gui文件編輯成exe可執行文件 Empty 如何將matlab gui文件編輯成exe可執行文件

發表 由 Admin 周三 6月 08, 2016 9:42 am


Admin
Admin

文章數 : 15038
注冊日期 : 2009-07-11

http://winggundam.show5forum.com

回頂端 向下

如何將matlab gui文件編輯成exe可執行文件 Empty 回復: 如何將matlab gui文件編輯成exe可執行文件

發表 由 Admin 周三 6月 08, 2016 9:42 am

如何將matlab gui文件編輯成exe可執行文件
我現在用Matlab M文件寫了一個計算程序,當輸入一些數時,通過程序,計算出一些結果。(比如我的
程序是sum=(a+b+c)/d,即給定a,b,c,d後,通過計算,得到sum 值)

現在我希望設計一個界面(用GUI),得到a,b,c,d的輸入框,輸入後,點擊“計算”按鈕,在結果顯示區
得到sum的值

現在我想讓這個小的計算界面能夠成為一個獨立運行的EXE文件, 在沒有安裝matlab的電腦上就可以運
行,請問這個問題如何實現呢?謝謝各位幫忙指點一下
zhangccb 發表於 2008-12-30 13:54
我也想知道這個問題
之前聽人說過,沒有裝matlab的電腦上,可以裝一個什麼插件就能運行matlab的程序,不過那個插件
也有一、兩百M的,暈~
ljelly 發表於 2008-12-30 14:14
可以用mcc 函數將編譯成脫離matlab環境執行的exe 文件
m文件變成這種形式還是比較簡單,如:
Make a stand-alone C executable for myfun.m:
mcc -m myfun
但做GUI的可能會有一點問題
沒細致的去研究,你可以自己嘗試一個簡單的GUI程序
dchen 發表於 2008-12-30 15:08
1: 用deploytool 生成你需要設計的GUI;
2: 在生成的 m文件的回調函數中添加你要得功能,如sum;
3: mbuild -setup選擇好編譯器;
4: mcc -m xx.m直接生成.exe文件。
5: 在沒有MATLAB的機器上安裝MCR - matlab compiler runtime, 註意一定要版本一致;
6: 添加MCR 路徑在環境變量中
你就可以用了。
hackersun 發表於 2008-12-31 09:45
hackersun 發表於 2008-12-31 09:45 基於MATLAB2008B與VS 2003生成獨立可執行的程序

如何將 MATLAB 程序編譯成獨立可執行的程序?如何將編譯好的獨立可執行程序發布在沒有安裝
MATLAB的電腦上?下面將一步步實現:

一、生成獨立可執行的程序(exe文件)步驟



1、安裝編譯器。可有多種選擇,matlab 自帶了一個 LCC,推薦使用 VC++6.0,我基於 VS 2003
實現。
2、設置編譯器。在matlab 命令行輸入mbuild –setup以及mex –setup,選擇安裝的c編譯器。
3、調用編譯器。此處使用 MATLAB 下的一個 GUI 平臺 deploytool 下完全實現。在命令窗口輸入
deploytool 即可看到。具體使用方法請Help。
當然,也可以輸入mcc -m filaname, filaname為要轉成exe 的m文件;
註: 在以前的版本中, 用編譯命令mcc -B sglcpp filaname; 自2006的版本後, 替換為mcc -mfilaname;
4、安裝\toolbox\compiler\deploy\win32目錄下的MCRInstaller。


二、脫離matlab運行可執行程序
MCR是由matlab的運行環境,占用不到300M的對於用不同matlab版本生成的exe 文件,MCR版本
也會有不同,因此,在程序打包時,最好將相應版本的MCR一起打包。MCR環境的設置文件存放目錄如
下:
\toolbox\compiler\deploy\win32
文件名為MCRInstaller.exe。可將其拷貝到自己的文件夾中,(7.0以前的版本是mglinstaller.exe)。
在MATLAB裏運行可執行程序的辦法是在前面加一個!,比如:!picshow,後綴名可有可無。
在其它沒有安裝matlab的機器上運行exe文件前:
首先安裝matlab的運行環境。 在同一機器上可以並存不同版本的matlab環境(換句話說不同版本不兼容)。
其次是要將“MCRinstaller.exe安裝目錄\runtime\win32”這個路徑添加到該計算機的環境變量中,通常
是自動加載。
如果沒有,也可手動安裝,添加的方法是:
右擊“我的電腦”“屬性”“高級”“環境變量”“添加”指定一個變量名,然後將上述路徑復制到裏面就可以了。
註:在安裝過程中會彈出讓安裝Microsoft.NETFramework可以不用安裝。
最後就是將編譯生成的相相關文件拷貝到同一目錄下,雙擊即可運行。
問題:目前此方法可完全運行在沒有安裝 MATLAB 以及 C/C++的電腦上,但是如果是在 AMD 的 CPU
可以運行,但是不會出現任何MATLAB編譯的界面。
美中不足就是,運行的時候dos的那個黑色地窗口一直存在。 如何將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目錄則必須與應用程序同一目錄。

方法二:
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.大功告成。 1.安裝 C編譯器(前提是你的電腦已經安裝了 VC)
>> mbuild -setup
%註意:'-'的後面緊跟 setup
Please choose your compiler for building standalone MATLAB applications:
Would you like mbuild to locate installed compilers [y]/n? y
Select a compiler:
[1] Lcc C version 2.4 in D:\MATLAB7\sys\lcc
[2] Microsoft Visual C/C++ version 6.0 in D:\Microsoft Visual Studio
[0] None
Compiler: 2
Please verify your choices:
Compiler: Microsoft Visual C/C++ 6.0
Location: D:\Microsoft Visual Studio
Are these correct?([y]/n): y
Try to update options file: C:\Documents and Settings\Leki\Application
Data\MathWorks\MATLAB\R14\compopts.bat
From template: D:\MATLAB7\BIN\WIN32\mbuildopts\msvc60compp.bat
Done . . .
--> "D:\MATLAB7\bin\win32\mwregsvr D:\MATLAB7\bin\win32\mwcomutil.dll"
DllRegisterServer in D:\MATLAB7\bin\win32\mwcomutil.dll succeeded
--> "D:\MATLAB7\bin\win32\mwregsvr D:\MATLAB7\bin\win32\mwcommgr.dll"
DllRegisterServer in D:\MATLAB7\bin\win32\mwcommgr.dll succeeded
2.在 MATLAB 中,將 M文件編譯成 exe(可執行)文件
定位於包含 meun.m,meun.fig 的文件路徑下。在command windows下輸入:
>> mcc -m meun.m
To get started, select MATLAB Help or Demos from the Help menu.
Warning: No matching builtin function available for
D:\MATLAB7\toolbox\simulink\simulink\set_param.bi
>>
這裏出現了上面警告 Warning 其解決方法如下:
將 \MATLAB7\toolbox\compiler\deploy\matlabrc.m中的 81 行 set_param(0,'PaperType',defaultpaper);
82 行 set_param(0,'PaperUnits',defaultunits);
用’%‘註釋掉之後,全部選中重新編譯了一次,然後重新啟動 matlab就沒有警告信息。
這裏的警告將它除去後,再編譯 exe 文件就通過了。
3.將編譯生成的文件發布到沒有 MATLAB 的電腦上
首先,在 MATLAB\toolbox\compiler\deploy\win32下找 MCRInstaller.exe文件
然後, 在沒有裝MATLAB的機子上安裝MCRInstaller到D:\MATLAB Component Runtime。
(目錄中,最好不要有空格,如用 D:\MCR 就可以了)
再接著,設置環境變量,右鍵點擊“我的電腦”-》屬性-》高級-》環境變量-》新建
變量名:Path
變量值:D:\MCR\v70\runtime\win32
再然後,運行 exe 文件,每次都是出現 DOS 界面後,幾秒鐘就自動關閉了
GUI 界面一次都運行不出來,也沒有錯誤信息提示
解決辦法:
{因為 MATLAB 需要用到處理器的數學運算部分(MATLAB 默認用的是 INTEL 的數學處理
單元),故需要設置一下 BLAS(Basic Linear Algebra Subroutines,就是"基礎線性幾何子程序"的
意思)環境變量.首先請確認你的MATLAB的文件夾中有如下文件:atlas_Athlon.dll(AMD系列
的請用這個), atlas_P4.dll(P4 的用這個),atlas_PIII.dll(P3 的用這個),atlas_PII.dll(P2 的用
這個),這些是對應處理器的數值運算優化文件 }
先找到 $MATLAB7\bin\win32目錄下的atlas_Athlon.dll (AMD系列CPU使用) 和atlas_P4.dll
(奔 4 用)文件,放到 MCR 目錄中(隨便),然後設置環境變量
變量名:BLAS_VERSION
變量值:D:\MCR\v70\atlas_Athlon.dll
這樣設置以後,再運行 exe 文件就 OK了。
後來運行exe時出現 Warning: C:\Program Files\MathWorks\MATLAB Component
Runtime\v70\toolbox\local\pathdef.m not found.
Toolbox Path Cache is not being used. Type 'help toolbox_path_cache' for more info.
mathworks中解決方法: Note that this is a benign warning message and should not affect the compilation or execution of the program.
One way to work around this issue is to create a blank pathdef.m and place it in the directory
$MCR\toolbox\local\ where $MCR is the directory where the MATLAB Component Runtime (MCR) has
been installed on your system.
‘一種解決此問題的方法是創建一個空 pathdef.m並將其放置在目錄$MCR\toolbox\local\ 中, 其中$ MCR
目錄是安裝MATLAB(MCR)時的路徑下’
Another way to workaround this issue is to create a new copy of startup.m and disable warning messages
as follows:
warning off
Ensure that the startup.m file is on the MATLAB path.
註意:在作出上述修改後要重新編譯文件。
4.去除獨立可執行程序運行時的“DOS 黑窗口”。
以上生成的 exe 程序運行時首先彈出一個 DOS 界面窗口,如果不需要其輸出數據和錯誤信息,
可將其去除。
matlba命令行輸入:
cd(prefdir)
edit compopts.bat
此時 compopts.bat打開,在文件最後添加:
set LINKFLAGS=%LINKFLAGS% -subsystem windows
如果程序比較復雜,易出現異常,則不建議去除這個dos 窗口以便調試。
matlab GUI程序轉換成exe可執行文件

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的機器上運行可執行程序。

將R2 2007b\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文件
在確定安裝好Matlab Compiler後,還需要對Compiler進行適當的配置,方法
是在Matlab命令窗口輸入:

Mbuild –setup, 按提示選擇matlab自帶編譯器LCC。

1.在matlab的command窗口中輸入
mcc -B sgl GUI.m
2.將上步生成的文件包括*m 文件和*.fig文件一起考到待運行的機器

此時仍需matlab所必需的動態連接庫。
3. 將 /extern/lib/win32/mglinstallar.exel拷貝到到待運行
機器上,; ;如果是7.0以上版本,應該是MCRInstaller.exe,路徑:
path>\toolbox\compiler\deploy\win32\MCRInstaller.exe (用buildmcr生成
MCRInstaller的壓縮文件)

4.在機器上先運mglinstallar.exe(MCRInstaller.exe), 然後選擇解壓目錄,
將在將在指定目錄下解壓縮出bin和toolbox兩個子目錄,
其中在bin\win32目錄下就是數學庫和圖形庫脫離MATLAB運行所需的所有動態
連接庫,共有37個。可以將這些.dll考入system32, 也可以直接放在應用程序
目錄下。
而toolbox目錄則必須與應用程序同一目錄。


4.去除獨立可執行程序運行時的“DOS黑窗口”。

以上生成的exe程序運行時首先彈出一個DOS界面窗口, 如果不需要其輸出數據
和錯誤信息,可將其去除。

Admin
Admin

文章數 : 15038
注冊日期 : 2009-07-11

http://winggundam.show5forum.com

回頂端 向下

如何將matlab gui文件編輯成exe可執行文件 Empty 回復: 如何將matlab gui文件編輯成exe可執行文件

發表 由 Admin 周三 6月 08, 2016 9:45 am

mcc -m xx.m

Admin
Admin

文章數 : 15038
注冊日期 : 2009-07-11

http://winggundam.show5forum.com

回頂端 向下

回頂端


 
這個論壇的權限:
無法 在這個版面回復文章