如何将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界面窗口, 如果不需要其输出数据
和错误信息,可将其去除。16334