http://blog.csdn.net/chenyujing1234 参考文章:
http://blog.sina.com.cn/s/blog_4f0fc2700100moj2.html
一、生成独立可执行的程序(exe文件) 步骤
1、安装编译器。可有多种选择,matlab自带了一个LCC,推荐使用VC++6.0,我基于VS 2005实现。 MATLAB编译器
1、产生C源码,并进而生成MEX文件。这种MEX文件的优点是:一,当程序变量为实数,或向量化程度较低,或含有循环结构时,采用该法可提高运行速度;二,与ASCII码的M文件不同,MEX文件采用二进制代码生成,能更好地隐藏文件算法,使之免遭非法修改。
2、产生C或C++源码,以便与其他C/C++模块结合行成独立的外部应用程序。运行所产生的应用程序,无需MATLAB环境的支持,但是往往需要MATLAB提供的C/C++数学库;如果调用了MATLAB绘图指令,则还需要MATLAB提供的C/C++图形库 3、产生C MEX的S函数,与Simulink配合使用,以提高S-函数的运行速度
4、产生C 共享库(动态链接库)或C++静态库,他们的使用无需MATLAB环境的支撑,但是需要MATLAB的数学库 局限性
1、无法编译脚本文件 2、不支持用户自定义对象 3、不支持eval,input,inline等函数 4、不支持的MATLAB的Java接口
2、设置编译器。在matlab命令行输入mbuild –setup以及mex –setup,选择安装的c编译器。
[cpp] view plaincopy
1. >> mbuild -setup
2. Please choose your compiler for building standalone MATLAB applications: 3.
4. Would you like mbuild to locate installed compilers [y]/n? y 5.
6. Select a compiler:
7. [1] Lcc C version 2.4 in D:\\MATLAB701\\sys\\lcc
8. [2] Microsoft Visual C/C++ version 7.0 in C:\\Program Files\\Microsoft Visual
Studio .NET
9. [3] Microsoft Visual C/C++ version 6.0 in D:\\Microsoft Visual Studio 10.
11. [0] None 12.
13. Compiler: 2 14.
15. Please verify your choices: 16.
17. Compiler: Microsoft Visual C/C++ 7.0
18. Location: C:\\Program Files\\Microsoft Visual Studio .NET 19.
20. Are these correct?([y]/n): y 21.
22. Try to update options file: C:\\Documents and Settings\\Administrator\\Applicat
ion Data\\MathWorks\\MATLAB\\R14\\compopts.bat
23. From template: D:\\MATLAB701\\BIN\\WIN32\\mbuildopts\\msvc70compp.ba
t 24.
25. Done . . . 26. 27.
28. --> \"D:\\MATLAB701\\bin\\win32\\mwregsvr D:\\MATLAB701\\bin\\win32\\mwcomutil.dll\"
29.
30. DllRegisterServer in D:\\MATLAB701\\bin\\win32\\mwcomutil.dll succeeded 31.
32. --> \"D:\\MATLAB701\\bin\\win32\\mwregsvr D:\\MATLAB701\\bin\\win32\\mwcommgr.dll\" 33.
34. DllRegisterServer in D:\\MATLAB701\\bin\\win32\\mwcommgr.dll succeeded 35.
36. >>
3、调用编译器。此处使用MATLAB下的一个GUI平台deploytool下完全实现。 在命令窗口输入deploytool即可看到。具体使用方法请Help。当然,也可以输入mcc -m filaname,filaname为要转成exe的m文件;
注:在以前的版本中,用编译命令mcc -B sglcppfilaname;自2006的版本后,替换为mcc -m filaname;
M脚本文件不能直接被MATLAB编译器所编译,解决方案:先把脚本M文件改写成函数M文件,然后再对这函数文件进行编译。下面通过举例进行阐述
例:有一个绘图的M脚本文件circle.m如下。希望获得一个MEX绘图程序, (1)原始的绘图脚本文件 [ex5_2.m] t=0:0.1:2*pi; x=t.*sin(3*t); y=t.*sin(t).*sin(t); plot(x,y);
(2)对这些脚本文件直接编译将因错误而失败 >> mcc -m ex5_2
To get started, type one of these: helpwin, helpdesk, or demo. For product information, visit www.mathworks.com.
Error: File \"ex5_2\" is a script M-file and cannot be compiled with the current Compiler. ??? Error executing mcc, return status = 1. (3)把脚本文件改写成函数文件
改写方法之一:在原始脚本文件最前面,加一行function circle_f(r). 具体如下: [ex5_2.m] function circle_f(r) t=0:0.1:2*pi;
x=t.*sin(3*t); y=t.*sin(t).*sin(t); plot(x,y);
(4) 再对ex5_2m进行编译,将顺利进行通过.
[cpp] view plaincopy
1. >> mcc -m ex5_2 2. 3. To get started, type one of these: helpwin, helpdesk, or demo. 4. For product information, visit www.mathworks.com. 5. 6. >> 7.
生成了以下文件:
其中
ex5_2.ctf ex5_2.exe是运行时必须的文件。
4 在未安装matlab的机器上运行可执行程序。
将D:\\MATLAB701\oolbox\\compiler\\deploy\\win32中的MCRinstaller.exe安装到该计算机上,将生成可执行程序脱离matlab运行所需的函数库。
将2中生成的ex5_2.ctf ex5_2.exe拷贝到该计算机同一路径。运行ex5_2.exe将生成ex5_2_mcr文件夹,包含程序运行所需的库。至此完成。
5 去除独立可执行程序运行时的“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
因篇幅问题不能全部显示,请点此查看更多更全内容