代码改变世界

matlab编译器和程序发布

2013-07-04 15:11  钱吉  阅读(7563)  评论(1编辑  收藏  举报

如何把编写好的matlab程序转换成c/c++语言,如何编译m文件为可执行程序,如何在没有matlab配置环境的机器上运行你编译出来的可执行程序?

一:matlab的编译器设置

执行命令:mbuild -setup,注意中间有一个空格。

>> mbuild -setup
Please choose your compiler for building standalone MATLAB applications: 
 
Would you like mbuild to locate installed compilers [y]/n? y
 
Select a compiler: 
[1] Lcc C version 2.4 in D:\MATLAB7\sys\lcc 
 
[0] None 

询问是否构建本地安装的编译器,我们先选y。因为我安装的时候,并没有设置matlab的其他编译器选项,所以这里只显示了matlab默认的编译器LCC。你可以选择1,使用它提供的编译器。如果要使用其它的编译器,按n,结果如下:

>> mbuild -setup
Please choose your compiler for building standalone MATLAB applications: 
 
Would you like mbuild to locate installed compilers [y]/n? n
 
Select a compiler: 
[1] Borland C++Builder version 6.0 
[2] Borland C++Builder version 5.0 
[3] Borland C++Builder version 4.0 
[4] Borland C++Builder version 3.0 
[5] Borland C/C++ version 5.02 
[6] Borland C/C++ version 5.0 
[7] Borland C/C++ (free command line tools) version 5.5 
[8] Lcc C version 2.4 
[9] Microsoft Visual C/C++ version 7.1 
[10] Microsoft Visual C/C++ version 7.0 
[11] Microsoft Visual C/C++ version 6.0 
 
[0] None 

我用的matlab版本是7.0,所以只提供了这几种编译器。其中最常用的vc编译器的版本与我们使用的vs发布版本对应关系为:(摘自:http://www.cnblogs.com/mars9/archive/2012/01/13/2321710.html)

VC6.0 —————— VISUAL STUDIO 6.0

VC7.0 —————— VISUAL STUDIO 2002

VC7.1 —————— VISUAL STUDIO 2003

VC8.0 —————— VISUAL STUDIO 2005

VC9.0 —————— VISUAL STUDIO 2008

VC10.0 —————  VISUAL STUDIO 2010

由于我安装的的vs版本最低的是2005,而其对应的编译器为vc8.0,所以matlab2007 不支持。所以这里只提供设置的方法。

我们选择选项9:

Compiler: 9
 
The default location for Microsoft Visual C/C++ compilers is C:\Program Files\Microsoft Visual Studio .NET 2003, 
but that directory does not exist on this machine.  
 
Use C:\Program Files\Microsoft Visual Studio .NET 2003 anyway [y]/n? n
Please enter the location of your compiler: [C:\Program Files\Microsoft Visual Studio .NET 2003] d:\software\Microsoft Visual Studio 8
 
Please verify your choices: 
 
Compiler: Microsoft Visual C/C++ 7.1 
Location: d:\software\Microsoft Visual Studio 8 
 
Are these correct?([y]/n): y
 
Try to update options file: C:\Users\bow\Application Data\MathWorks\MATLAB\R14\compopts.bat 
From template:              D:\MATLAB7\BIN\WIN32\mbuildopts\msvc71compp.bat 
 
Done . . . 

这样就手动设置了vc编译器的路径,并改写matlab的编译器设置bat文件。完了以后,我们就可以用现在设置好的编译器编译M文件。

 

二:编译M文件

用到的matlab命令是:mcc

命令格式为:
mcc[-options]mifilel[mfile2…mfileN];
options为编译参数;mfilel为待编译的Matlab文件,如果包含多个Matlab文件,可以直接列在mfilel后面。
如:mcc -m ReadComAndDraw.m

执行完了以后,如果没报错,则会生成如下的目录结构:

第三个exe文件就可以执行了。最后两个是matlab将M文件转换得到的C文件。

三:发布可执行文件

上面生成的exe文件如果直接copy到没有matlab环境中的机器上运行时会报错的。因为缺少了相应的库支持。现在你要做的是:打包Matlab组件运行环境(Matlab Component Runtime,MCR)。将MCR与可执行程序一起打包,拷贝到其他没有安装Matlab的机器上,并在该机器上安装MCR,安装完毕即可以直接在该机器上运行编译的Matlab可执行程序。MCR安装文件位于:Matlab安装目录\toolbox\compiler\deploy\win32\MCRInstaller.exe
在2008版的Matlab中,已经内置了Matlab编译发布工具箱,在Matlab命令窗口中运行deploytool命令,即可以调出该工具窗口,通过该工具可以方便、快捷地编译发布Matlab程序。

 

先写到这里,以后有相关内容再补充!