MATLAB生成可执行文件.docx
《MATLAB生成可执行文件.docx》由会员分享,可在线阅读,更多相关《MATLAB生成可执行文件.docx(9页珍藏版)》请在冰豆网上搜索。
MATLAB生成可执行文件
MATLAB生成可执行文件(.exe文件)
2010-07-2814:
59:
25| 分类:
matlab学习
要将用Matlab语言编写的函数文件编译成可独立执行的*.exe文件(即可脱离Matalab环境的执行程序),首先要安装和配置好MatlabCompiler,一般来说,在安装Matlab时就已经安装了相应版本的MatlabCompiler。
只是不同版本的Matlab,其编译器的使用方法有一定的差异,这一点要引起一定的注意。
在确定安装好MatlabCompiler后,还需要对Compiler进行适当的配置,方法是在Matlab命令窗口输入:
Mbuild–setup
然后根据提示执行相应的操作,使用者可根据自己计算机中现有编译器的情况选择合适的编译器,如VC++6.0、VC++7.0、BlandC的编译器等,目前Matlab好象还不支持VC++8.0(我计算机安装的就是VC++2005,Matlab就无法识别)。
当然,如果你的计算机里根本就没有安装其他任何语言的编译器,也可选择Matlab自带的Lcc编译器,其实这个编译器对大多数用户已经够用了(我就是选择的Matlab自带的Lcc编译器)。
配置好编译器后,自然就是对自己编写的M文件进行编译了。
将M文件编译为独立可执行文件的语法是:
>>mcc–mfun1.mfun2.m…..
其中fun1就是最后的可执行文件的名称。
另外,也可通过采用命令开关-o指定编译最终目标文件的名称,如mcc–mmain.m–omrank_main,就是将编译后的文件指定为mrank_main.exe。
编译后的生成文件根据编译器的版本不同而不同。
具体的可参阅相关资料。
如果要在没有安装matlab的计算机上执行编译后的程序,首先要将MATLAB701toolboxcompilerdeploywin32中的MCRinstaller.exe安装到该计算机上(7.0以前的版本是mglinstaller.exe)。
其次是要将“MCRinstaller.exe安装目录runtimewin32”这个路径添加到该计算机的环境变量中,添加的方法是:
右击“我的电脑”“属性”“高级”“环境变量”“添加”指定一个变量名,然后将上述路径复制到里面就可以了。
第三步是将编译生成的相相关文件拷贝到同一目录下(当然其他目录亦可)。
第四步是打开MS-dos操作窗口,进入到编译后的*.exe程序所在的目录,执行编译生成的*.exe文件即可。
需要说明的一个问题:
如果你的程序还附带有图片(如Version上的图标)、Web页面(如help文档),在编译的时候可能无法与M文件一起编译(因为我没有试过,也没有看到有关这方面的介绍),这没有关系,先在计算机上执行一次你编译后生成的独立可执行文件,这时在同一目录下会生成一个以你编译后的程序名+_mcr结尾的文件夹,这时,你只需要把与程序相关的图标和Web页面拷贝到该文件夹中的Matlabprogram下面的一个子目录(一般与用于编译的文件夹名相同)中即可。
其他的方法还有:
(以下是网上搜索到的方法,没有试验过,有兴趣的朋友可以试一试)
方法
方法二:
如何将gui生成exe?
已有gui.m文件和gui.fig文件
1在matlab的command窗口中输入
mcc-BsglGUI.m
2.将上步生成的文件包括*.m文件和*.fig文件一起考到待运行的机器
此时仍需matlab所必需的动态连接库。
3.将/extern/lib/win32/mglinstallar.exel拷贝到到待运行机器上
4.在机器上先运行mglinstallar.exe,然后选择解压目录,将在指定目录下解压缩出bin和toolbox两子目录,其中在binwin32目录下就是数学库和图形库脱离MATLAB运行所需的所有动态连接库,共有37个。
可以将这些.dll考入system32,也可以直接放在应用程序目录下。
而toolbox目录则必须与应用程序同一目录。
5.大功告成。
方法三:
运行mcc-BsglGUI.m生成exe文件,把GUI.exe文件和GUI.ctf文件拷贝到目标电脑上,然后在目标电脑上安装MCRInstaller.exe,安装完以后,我点击GUI.exe,它显示:
thisapplicationhasrequestedtheRuntimetoterminateitinanunusualway。
这个可能是哪里出错了呢?
Solution:
ThesegmentationviolationcanbecausedduetoacorruptionineithertheprofileofthecurrentuserorbycorruptedWindowslibraries.Inordertodeterminewhichisthecause,trylogginginasadifferentusernameandrunMATLAB.
IfyouareabletosuccessfullylaunchMATLABunderadifferentusername:
1.Logontothemachine,astheuserthatisreceivingtheerror.
2.Onyourdesktop,clickonStart>Run
3.Type"regedit"intheOpentextfieldandclickOK,thiswillbringuptheRegistryEditor
4.IntheRegistryEditorexpandthefollowingfolders:
HKEY_CURRENT_USER>Software>MathWorks>Matlab
5.UndertheMATLABkey,findthefolderhavingthesamenameastheversionnumberoftheMATLABthatiscrashing;anddeleteit.ThisRegistrykeywillberegeneratedthenexttimeMATLABisstarted.
ClickonthelinkbelowtoviewanimageoftheRegistryEditor,whichshowshowtodeletearegistrykeyforMATLAB6.5(R13).
Afterfollowingthesesteps,youshouldbeabletolaunchMATLABsuccessfully.
IfMATLABcrashesregardlessoftheuserwhoisloggedin,thecrashmaybecausedbycorruptedsystemlibraries.ForWindowsNT,2000,orXP,somecustomershavefoundthatreinstallingWindowsServicePackshaveresolvedtheissue。
要生成exe文件有以下几个步骤:
1、首先安装c编译器,如microsoftvisualc++6.0;
2、在matlab命令行里输入mbuild-setup,选择你安装的c编译器(按照提示操作即可);
3、安装MATLAB7/toolbox/compiler/deploy/win32目录下的MCRInstaller;
4、输入mcc-mfilaname1filename2……,filename1和filename2为要转成exe的m文件。
我也是最近才搞定的这个问题,按下述步骤进行,就没有问题,我已经运行成功,但是遇到你程序的bug的话,便会出现错误,关闭整个程序
希望这些对你有用
如何将MATLAB程序编译成独立可执行的程序?
如何将编译好的独立可执行程序发布在没有安装MATLAB的电脑上?
下面将一步步实现:
一、生成独立可执行的程序(exe文件)步骤
1、安装编译器。
可有多种选择,matlab自带了一个LCC,推荐使用VC++6.0,我基于VS2003实现。
2、设置编译器。
在matlab命令行输入mbuild–setup以及mex–setup,选择安装的c编译器。
3、调用编译器。
此处使用MATLAB下的一个GUI平台deploytool下完全实现。
在命令窗口输入deploytool即可看到。
具体使用方法请Help。
当然,也可以输入mcc-mfilaname,filaname为要转成exe的m文件;
注:
在以前的版本中,用编译命令mcc-Bsglcppfilaname;自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的那个黑色地窗口一直存在。
下面将实现去除黑屏的办法:
消除运行MATLAB生成的exe程序的dos黑屏的办法
基于MATLAB生成exe文件后,每次运行都存在dos黑屏的问题,现在可以通过以下方法解决:
方法一:
在命令窗口输入:
cd(prefdir)
editcompopts.bat
在打开的文件最后添加以下语句:
A.VC环境下:
setLINKFLAGS=%LINKFLAGS%/SUBSYSTEM:
WINDOWS/ENTRY:
mainCRTStartup
B.LCC环境下:
setLINKFLAGS=%LINKFLAGS%-subsystemwindows
C.Borland:
setLINKFLAGS=%LINKFLAGS%-aa
保存以后,再重新编译m文件,生成的exe文件运行起来就没有dos窗口了。
方法二:
使用suppress工具:
下载附件中的suppress压缩包后解压,(当然您可以自己去Google然后再下载)会看到一个suppress.ini文件,用记事本打开,然后将其中“Name=test.exe”中text.exe的改为你生成的exe文件名。
将suppress.exe(有个关盘和显示器的图标),改后的suppress.ini放到你生成的exe的同目录下。
执行suppress.exe或者您自己生成的exe可以了。
当然您可以自己修改suppress.exe的名字,改为您自己想要的名字。
其中的方法一在使用后生成的exe再到没有任何安装MATLAB的机子上运行也不会有黑屏了。
方法二的缺点就是要同时存在您生成的exe以及supress.exe,必须在同一目录下。
生成matlab gui exe文件的方法
1、在matlab的command窗口输入命令:
mcc -B sgl Processing_Img.m,其中Processing_Img.m为gui 的.m文件。
2、将第一步制作产生的Processing_Img.exe文件、Processing_Img.prj文件,以及MCRInstaller.exe文件拷贝到同一文件夹下, MCRInstaller.exe在
\\MATLAB\R2009a\toolbox\compiler\deploy\win32下面。
3、在要允许Processing_Img.exe的机子上运行MCRInstaller.exe,并安装在同一文件夹下,耐心
等待即可,然后运行Processing_Img.exe便OK.
总结了好久终于将matlab的编译过程找全了,给各位参考!
完整gui程序设计与发布
matlabGUI程序转换成exe可执行文件
1.设置编译器:
在确定安装好MatlabCompiler后,还需要对Compiler进行适当的配置,方法是在Matlab命令窗口输入:
mbuild–setup,按提示选择matlab自带编译器LCC。
2.将脚本编译为可执行文件:
在此路径下命令行输入:
mcc–mgui.m,
gui.exe为脱离matlab环境运行必需的文件。
3.在未安装matlab的机器上运行可执行程序。
将R22007b\toolbox\compiler\deploy\win32中的MCRinstaller.exe安装到该计算机上,将生成可执行程序脱离matlab运行所需的函数库。
将2中生成的gui.ctf,gui.exe拷贝到该计算机同一路径。
运行gui.exe将生成gui_mcr文件夹,包含程序运行所需的库。
至此完成。
去除独立可执行程序运行时的“DOS黑窗口”。
以上生成的exe程序运行时首先弹出一个DOS界面窗口,如果不需要其输出数据和错误信息,可将其去除。
matlba命令行输入:
cd(prefdir)
editcompopts.bat
此时compopts.bat打开,在文件最后添加:
setLINKFLAGS=%LINKFLAGS%-subsystemwindows
GUI生成的exe文件怎么去掉左上的图标?
javaFrame=get(hObject,'JavaFrame');
javaFrame.setFigureIcon(javax.swing.ImageIcon('你要换的图像.jpg')
加在OpeningFcn内。
Matlab时如何让exe文件带上自己想要的图标
假设你的图标文件是:
DA.ico;你想编译的m文件是:
data.m
第一步:
创建一个文本文件,里面写入"ConAppICONDA.ico"
第二步:
把刚才的文本文件重命名为一个rc文件,如DA.rc
第三步:
在matlab命令窗口中键入:
system(['"'matlabroot'\sys\lcc\bin\lrc"/i"'pwd'\DA.rc"']);
这一步是把DA.rc和DA.ico编译到一起
此时在你的当前工作目录下会生成一个名为DA.res的resourcefile
第四步:
将m文件与res文件一起编译
mcc-mdata.m-MDA.res