如何把编写好的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程序。

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

matlab编译器和程序发布的更多相关文章

  1. matlab 程序发布

    将matlab程序发布为可执行程序包 说明,这种可执行程序包可以在没有安装matlab的计算机上运行. 1. 打开Applicaiton Compler 如果下拉列表中没有这个APPLICATIOND ...

  2. MATLAB调用C程序、调试和LDPC译码

    MATLAB是一个很好用的工具.利用MATLAB脚本进行科学计算也特别方便快捷.但是代码存在较多循环时,MATLAB运行速度极慢.如果不想放弃MATLAB中大量方便使用的库,又希望代码能迅速快捷的运行 ...

  3. Matlab调用C程序

    Matlab调用C程序   复制来自https://blog.csdn.net/u010839382/article/details/42463237 Matlab是矩阵语言,如果运算可以用矩阵实现, ...

  4. Qt之程序发布以及打包成exe安装包

    一.简述 Qt项目开发完成之后,需要打包发布程序,而因为用户电脑上没有Qt配置环境,所以需要将release生成的exe文件和所依赖的dll文件复制到一个文件夹中,然后再用 Inno Setup打包工 ...

  5. QT5---应用程序发布(使用windeployqt和NSIS)

      采用动态编译的方式发布程序,即release版本. 找齐动态依赖库(.dll) 方法一   用Dependency Walker这个工具去找少了那些dll,不过这个工具也不怎么靠谱,一个比较靠谱但 ...

  6. MATLAB 编译器的使用

    MATLAB 编译器的使用MATLAB 编译器(相应命令为 mcc)可生成独立应用程序.库.COM 对象.Excel 插件,218 MATLAB 实用教程它根据目标类型生成合适的包装器文件.包装器文件 ...

  7. Qt 程序发布以及打包成exe安装包

    一.简述 Qt 项目开发完成之后,需要打包发布程序,而因为用户电脑上没有 Qt 配置环境,所以需要将 release 生成的 exe 文件和所依赖的 dll 文件复制到一个文件夹中,然后再用 Inno ...

  8. 将Vuforia程序发布到Windows10系统的基本流程

    最新博客地址已转到: http://blog.csdn.net/zzlyw?viewmode=contents   ------------------------------------------ ...

  9. 发布App,赢iPad mini + 美金100$ - Autodesk Exchange 应用程序发布竞赛

    开发牛人们,送你个iPad mini要不要,Autodesk Exchange应用程序发布竞赛开始了. 摘要版: 在2014年9月30日午夜前提交到Autodesk Exchange 应用程序商店上, ...

随机推荐

  1. 采用DOM进行表格的修改操作

    2015-08-31 <html> <head> <title>采用DOM进行表格的修改操作</title> <script language=& ...

  2. mysqldump备份详解

    -A  备份所有-B  恢复时会自动创建库  (同时支持导出多个库  -B  db01 db02) -d  导出表结构 #库中有多个表导出时导出没加 –B参数,则要先导入结构,如果表结构没有备份,那就 ...

  3. .net 大文件上传注意,修改 IIS 配置

    原因 Web 服务器上的请求筛选被配置为拒绝该请求,因为内容长度超过配置的值. 可尝试的操作:确认 applicationhost.config 或 web.config 文件中的 configura ...

  4. [转]理解Linux系统中的load average

    转自:http://heipark.iteye.com/blog/1340384 谢谢,写的非常好的文章. 一.什么是load average linux系统中的Load对当前CPU工作量的度量 (W ...

  5. sql实现对多个条件分组排序方法和区别

    转自: http://blog.csdn.net/winer2008/article/details/4283539 rank,dense_rank,row_number区别 一:语法(用法):    ...

  6. 自动解析URL

    function parseURL(url) { var a = document.createElement('a'); a.href = url; return { source: url, pr ...

  7. chineseChess

    最近学习了chineseChess的Qt实现,把一些东西总结一下: 实现功能: 1.人人对战 2.人机对战 3.网络版 一.基础性工作:(人人对战) 1.棋盘和棋子的绘制(QPinter,drawLi ...

  8. 形形色色的下拉菜单 (css3)

    http://www.iteye.com/news/25339

  9. ant学习

    如果在构建文件当中depends后面有多个依赖,而且这多个依赖还相互依赖,那么只会执行被依赖的任务,不会重复执行任务 ant学习

  10. 关于Java擦除特性

    package thinkingInJava; /* * 模拟擦除 */ public class SimpleHolder { private Object obj ; public void se ...