如何把编写好的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. 为什么用evernote

    其实是没有什么为什么的. 如果真要找个理由,那应该是: 为知的界面看着总觉得很糙.      这个糙指的是不像个好软件,而装上evernote感觉就不一样. 有道笔记新版本貌似在我这儿有BUG.    ...

  2. reason: '*** Collection <__NSCFArray: 0x7ffa43528f70> was mutated while being enumerated.'

    一,错误分析 1.崩溃代码如下: //遍历当前数组,判断是否有相同的元素 for (NSString *str in self.searchHistoryArrM) { if ([str isEqua ...

  3. 九、UINavigationController切换视图 实例

    现版本 SDK 8.4 Xcode 运行Xcode 选择 Create a new Xcode project ->Single View Application 命名 NavigationCo ...

  4. OSG中的示例程序简介

    OSG中的示例程序简介 转自:http://www.cnblogs.com/indif/archive/2011/05/13/2045136.html 1.example_osganimate一)演示 ...

  5. mysql 查看语句的执行效率

    EXPLAIN 一.用途: 1.什么时候必须为表加入索引以得到一个使用索引找到记得的更快的select 2.知道优化器是否以一个最佳次序联结表. <官方的关于explain的文档在http:// ...

  6. Java数组转成list,list转数组

    下面介绍一下Java中数组和List集合如何互相转换. 数组转成list 第一种: String[] userid = {"aa","bb","cc& ...

  7. Spring中@Async用法总结

    引言: 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的:但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在Spring 3. ...

  8. 设备像素比devicePixelRatio简单介绍

    本文所说devicePixelRatio其实指的是window.devicePixelRatio, 被所有WebKit浏览器以及Opera所支持,随着显示器的发展,这个属性也慢慢登上了前端技术的舞台. ...

  9. 解决jsp中文乱码问题

    1. 先解决响应中的乱码 何为响应中的乱码?把页面中的"username"改成"用户名"你就知道了. 所谓响应中的乱码,就是显示页面上的乱码,因为页面数据是从服 ...

  10. zju(2)vivi的配置编译和固化

    1.实验目的 熟悉vivi的知识和应用并使用交叉编译平台vivi引导并烧写到目标板. 二.实验内容 1. 在Ubuntu下配置vivi并进行交叉编译: 2. 将编译好的vivi烧写到目标板上. 三.主 ...