您的当前位置:首页matlab函数exe文件生成

matlab函数exe文件生成

2024-02-02 来源:乌哈旅游
 转载请标明:

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

因篇幅问题不能全部显示,请点此查看更多更全内容