网上找了很多关于将GUI编译成exe的文章,但总是碰到很多问题,经过反复摸索终于搞定在R2013a版本下的编译方法了!先将工作目录切换到fig和m文件所在位置,在命令行中执行相应的命令,具体过程记录如下:
>> mbuild -setup
Welcome to mbuild -setup. This utility will help you set up
a default compiler. For a list of supported compilers, see
http://www.mathworks.com/support/compilers/R2013a/win32.html
Please choose your compiler for building shared libraries or COM components:
Would you like mbuild to locate installed compilers [y]/n? y
Select a compiler:
[1] Microsoft Visual C++ 2010 in F:\Program Files\Microsoft Visual Studio 10.0
[2] Microsoft Visual C++ 6.0 in C:\Program Files\Microsoft Visual Studio
[0] None
Compiler: 1
Please verify your choices:
Compiler: Microsoft Visual C++ 2010
Location: F:\Program Files\Microsoft Visual Studio 10.0
Are these correct [y]/n? y
****************************************************************************
Warning: Applications/components generated using Microsoft Visual C++
2010 require that the Microsoft Visual Studio 2010 run-time
libraries be available on the computer used for deployment.
To redistribute your applications/components, be sure that the
deployment machine has these run-time libraries.
****************************************************************************
Trying to update options file: G:\Users\quiklcm\AppData\Roaming\MathWorks\MATLAB\R2013a\compopts.bat
From template: F:\MATLAB~1\R2013a\bin\win32\mbuildopts\msvc100compp.bat
Done . . .
>> mcc -W main -T link:exe isoline
>>
对上述命令的注解:
1)mbuild命令用于安装编译器,由于我的电脑曾经安装过vc6和vs2010,所以mbuild命令找到了上述两个编译器,我选择了第一个;
2)mcc命令就是将我编写的isoline.m和isoline.fig文件编译成isoline.exe文件,命令执行完成后,在工作目录中生成了下面三个文件:
isoline.exe
mccExcludedFiles.log
readme.txt
就是这个命令,让我琢磨了很久,很多文章说的是执行mcc -m isoline.m命令,我记得以前装Matlab 7.0时,确实是使用该命令来编译的;可是在R2013a下,总是报下面的错误:
??? Unable to determine application type, since no wrapper function was specified.Please use the -W switch or specify application type via -m or -l.Type 'mcc -?' for further assistance.
不过在mcc -W main -T link:exe isoline命令执行成功后,再次执行mcc -m isoline.m,则可以正常运行了!
3)这样编译工作完成了!退出Matlab,双击isoline.exe即可运行。
需要注意的问题:
1)虽然生成的可执行程序可以脱离Matlab环境运行,但是它需要Matlab C/C++数学库文件或者图形库文件的支持才能运行,如果需要在未安装Matlab的机器上运行,则需要按照上面生成的readme.txt中的叙述,安装MATLAB Compiler Runtime (MCR);
2)上面命令行中的警告信息说明,运行exe程序时可能需要vs2010的库文件,具体需要哪些文件,这个待验证了,等我拿到其他机器上测试后,再做研究!
3)运行exe程序时,会出现命令行窗口,该窗口可以显示fprintf命令打印出来的后台消息,主要用于程序调试,如果不需要该命令行窗口,可重新编译,编译命令为:
mcc -e isoline.m
重新编译后,运行生成的exe程序,则不会再出现命令行窗口!