Matlab同样可以制作出和VC++技术一样的基于对话框的GUI界面。
在Matlab软件中编写GUI程序的方法是:命令行中输入guide,即可进入。
Matlab是强大的数学建模软件,我们可以通过MatlabGUI编写可视化的数学程序,方便我们的操作。
制作好的MatlabGUI界面程序如何转化成Windows下的可执行文件(后缀名字exe)、Matlab程序如何在没有Matlab软件的电脑上运行。下面这篇文章来解决上述的问题。
网上有很多零零散散的教程,写的乱七八糟,在此我进行了总结,总结出最全的几种方法(每一种都是亲自试过并截图)。
一、 生成独立可执行的程序(exe文件)步骤
注意:Matlab安装的时候尽量选择全部安装,这样会为以后省下很多事情,比如当时你没有全部安装,此时Matlab 自带的编译器你需要单独安装,这就比较麻烦了(需要找到你得版本对应的编译器,再进行安装)
注意:对MatlabGUI程序转成可执行文件需要对Matlab程序进行编译,有两种方法,一种是使用Matlab自带的编译器LCC,但是这个不是很好用,个人不推荐。第二种是使用你电脑上的编译器,个人推荐使用VS编译器。
注意:如果Matlab软件先安装,而VS2010后安装,这时在执行以下操作的时候会出错,Matlab会显示找不到编译器。解决办法就是首先安装VS,再安装Matlab,不过一般编程人员电脑上都有VS,这种出错机会很小。这一点错误我是亲身体验过的。
注意:VS一定要默认路径安装,否则Matlab很有可能出现找不到编译器的,如下图:
为了演示步骤,我们在matlab中新建一个GUI程序,也就是后缀名为fig的程序,我们的目的就是将该文件转成可执行文件。
文件名为example。运行如图(什么都没写)
第一种方法:
1、安装编译器。可有多种选择,matlab自带了一个LCC,推荐使用电脑上自带的VS2010(版本是多少都无所谓),我基于VS 2010实现。
2、设置编译器。在matlab命令行输入mbuild –setup以及mex –setup,选择安装的c编译器。如下图:
3、mcc -m filaname, filaname为要转成exe的m文件;
注:在以前的版本中,用编译命令mcc -B sglcpp filaname;自2006的版本后,替换为mcc -mfilaname;
4、安装<matlab path> oolboxcompilerdeploywin32目录下的MCRInstaller到目标目标电脑上,此时我们就可以在没有matlab软件的电脑上运行该软件了。
注意:
脱离matlab运行可执行程序
MCR是由matlab的运行环境,占用不到300M的对于用不同matlab版本生成的exe文件,MCR版本也会有不同,因此,在程序打包时,最好将相应版本的MCR一起打包。MCR环境的设置文件存放目录如下:
<matlab path> oolboxcompilerdeploywin32
文件名为MCRInstaller.exe。可将其拷贝到自己的文件夹中,(7.0以前的版本是mglinstaller.exe)。
在MATLAB里运行可执行程序的办法是在前面加一个!,比如:!picshow,后缀名可有可无。
在其它没有安装matlab的机器上运行exe文件前:
首先安装matlab的运行环境。在同一机器上可以并存不同版本的matlab环境(换句话说不同版本不兼容)。
其次是要将“MCRinstaller.exe安装目录
untimewin32”这个路径添加到该计算机的环境变量中,通常是自动加载。
如果没有,也可手动安装,添加的方法是:
右击“我的电脑”“属性”“高级”“环境变量”“添加”指定一个变量名,然后将上述路径复制到里面就可以了。
注:在安装过程中会弹出让安装Microsoft.NETFramework可以不用安装。
最后就是将编译生成的相相关文件拷贝到同一目录下,双击即可运行。
问题:目前此方法可完全运行在没有安装MATLAB以及C/C++的电脑上,但是如果是在AMD的CPU可以运行,但是不会出现任何MATLAB编译的界面。
美中不足就是,运行的时候dos的那个黑色地窗口一直存在。下面将实现去除黑屏的办法:
消除运行MATLAB生成的exe程序的dos黑屏的办法
基于MATLAB生成exe文件后,每次运行都存在dos黑屏的问题,现在可以通过以下方法解决:
方法一: 在命令窗口输入
cd(prefdir)
edit compopts.bat
在打开的文件最后添加以下语句:
A.VC环境下:
set LINKFLAGS=%LINKFLAGS%/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup
B.LCC环境下:
set LINKFLAGS=%LINKFLAGS% -subsystemwindows
C. Borland:
set LINKFLAGS=%LINKFLAGS% -aa
保存以后,再重新编译m文件,生成的exe文件运行起来就没有dos窗口了