MCC学习总结

本文来自高校自动化网(Www.zdh1909.com) 详细出处参考(转载请保留本链接)http://www.zdh1909.com/html/matlab/16654_2.html

 

   mcc是调用matlab编译器的命令,你可以从matlab命令行或者DOSUNIX命令行调用它。它用于将M文件部署到Matlab运行环境外,产生在CC++里的(wrapper)文件,和有选择的建立独立的二进制文件。默认情况下,它将所有结果文件写入当前文件夹。如果指定了多个M文件,编辑器将为每个文件残生一个CC++的函数。如果C或目标文件被指定,他们将连通产生的所有C文件被送到mbuild

 
mcc [-options] mfile1 [mfile2 ... mfileN] [C/C++file1 ... C/C++fileN]

选项:

 

-a:加入到档案文件。

 

添加一个文件到CTF档案文件。使用

CODE:

 

-a filename

将一个文件直接加入到CTF档案文件。可以多次使用-a选项。编译器会在matlab路径中寻找这些文件,所以指定完整路径是可选的。这些文件不会被送到mbuild,所以,你可以包含类似数据文件的文件。

 

-b:产生Excel兼容的公式函数。

 

产生一个VB文件(.bas)包含Excel公式函数接口的COM对象。当被导入到工作表VB代码,这些代码将允许matlab函数作为一个单元格公式函数来使用。这需要matlabExcel编译工具。

 

-B:指定包文件(bundle file)

 

mcc命令行,将文件替换为制定文件的内容。使用

CODE:

 

-B filename[: <a1>, <a2>, ..., <an>]

这个包文件名,应该仅包含mcc命令行选项和对应的参数或者其他文件名。这个文件还可以包含其他-B选项。

 

-c:只产生C代码。

 

当此选项同一个宏被调用时,将产生C代码,但是不调用mbuild,也就是,不产生单独的可执行程序。等价于放在mcc命令行后的-T选项。

 

-d:指定输出文件夹。

-f:指定选项文件。

-g:产生调试信息。

-I:添加文件夹到Path

-m:产生一个可单独运行的文件。

-M:直接传递。

-N:清空Path

-o:指定可执行文件名。 

-p:将文件夹加入到Path

-R:运行时。 

-T:指定目标阶段。

指定输出文件的目标阶段和类型。使用

CODE:

-T target

来定义输出类型。合法的目标值是:

codegen

compile:exe

compile:lib

link:exe

link:lib

 

-v:显示详细信息。

-w:显示警告信息。

-W:指定包装函数类型。

控制产生函数包装。使用

CODE:

-W type

来控制产生的M文件函数的包装类型。你提供一个函数列表,编译器将产生这些函数的保证和任何适当的全局变量的定义。下面是合法的type参数。

main:产生一个POSIX脚本main()函数;

lib:<string>:产生一个初始化和终止函数,用于编译器产生的函数被编译进一个大的程序。这一选项同样产生一个头文件,包含指定M文件所有函数的原型。<string>成为产生的C/C++文件和头文件的基础文件名。创建一个.exports文件,包含了所有非静态函数名。

com:<component_name>,<class_name>,<version>:从M文件产生一个COM对象。

none:不产生包装文件,默认为none

 

-Ylicense文件。

-z:指定路径。

 

myfun.m产生一个可执行文件:

CODE:

 

mcc -m myfun

myfun.m产生一个可执行文件。myfun.m文件在/files/source文件夹,并将结果C文件和可执行文件放到/files/target文件夹:

CODE:

 

mcc -m -I /files/source -d /files/target myfun

使用一个mcc调用为myfun1.mmyfun2.m产生可执行文件:

mcc -m myfun1 myfun2

 

a0.ma1.m创建一个共享/动态链接库,叫liba

CODE:

 

mcc -W lib:liba -T link:lib a 0 a1

 

 

 

下文转自:

 

 http://wenku.baidu.com/view/06f283c62cc58bd63186bd9a.html

1.当MATLAB用户一开始并不知道当前版本的MATLAB Compiler所支持的编译器类型有哪些时,需设置编译环境如下:

>> 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

 

Compiler: 11        %输入

 

Your machine has a Microsoft Visual C/C++ compiler located at

C:\Program Files\Microsoft Visual Studio. Do you want to use this compiler [y]/n? y  %输入

 

Please verify your choices:

 

Compiler: Microsoft Visual C/C++ 6.0

Location: C:\Program Files\Microsoft Visual Studio

 

Are these correct?([y]/n): y     %输入

 

Try to update options file: C:\Documents and Settings\Administrator\Application

Data\MathWorks\MATLAB\R14\compopts.bat

From template:              C:\MATLAB7\BIN\WIN32\mbuildopts\msvc60compp.bat

 

Done . . .

 

 

--> "C:\MATLAB7\bin\win32\mwregsvr C:\MATLAB7\bin\win32\mwcomutil.dll"

 

DllRegisterServer in C:\MATLAB7\bin\win32\mwcomutil.dll succeeded

 

--> "C:\MATLAB7\bin\win32\mwregsvr C:\MATLAB7\bin\win32\mwcommgr.dll"

 

DllRegisterServer in C:\MATLAB7\bin\win32\mwcommgr.dll succeeded

至此,环境配置已经完成了.

2.简单也最常用的生成独立.EXE文件命令:

mcc -m m文件名(如果主程序调用子程序时,要一起写进去)

例如:

mcc -m pure ssimplex my_closereq

其中,pure,调了子程序ssimplex和 my_closereq

3.可在它端计算机独立运行运行的方法:

(1)方法一:就生成了独立EXE文件pure.m,把它与pure.ctf文件一起复制到MATLAB的安装目录\toolbox\compiler\deploy的目录中,或者也可以在每次编译后产生的mcr目录内的\toolbox\compiler\deploy的目录中搜索到.deploy文件复制到它端计算机,都可以运行EXE文件.

(2)方法二:MATLAB的安装目录\toolbox\compiler\deploy\win32MCRInstaller.exe文件复制把在它端计算机,并安装之,就可以把生成的独立执行exe文件复制过去,即可独立运行.

4.MATLAB保护文件(.p):

 

1)编译后的P文件比原与文件有相同的文件名,只是其扩展名为.p。而在MATLAB环境中P文件有比M文件较高的调用位级,因此如果MATLAB中存在相同文件名的PM文件,则会以P文件为优先的调用顺序。

2P文件有两大优点:①增加文件的执行速度②能够将文件保密。以第2点最为重要。P文件与M文件执行上的功能与操作方式都是一样的,但最大的不同是P文件无法阅读文件内容,因此可以很轻易地保持文件内容不外泄的效果。

3P文件的编译方式如下:pcode 文件名

例如,将compiler_test.m这个文件编译为P文件就必须输入以下的程序:pcode compiler_test

(4)当输入compiler_test,调用的是compiler_test.p,而不是compiler_test.m,因为P文件的优先度高于M文件件.

(5)P文件可以用来作保密代码之用,如果你给别人一个M文件,别人可以打开来看到你所有的代码和算法。如果你的代码不想被别人看到,那可以给他P文件。

(6)当用GUI做界面时,P文件的同时也应该给.fig文件才能够运行得了.pcode函数也可以应用在M函数文件。

5.asv文件:

后缀为asv的文件是.m文件自动保存的时候产生的临时文件,程序非正常退出的时候恢复用的,可以用记事本打开看一下,如果matlab正常关闭的话,删掉没影响。

file-preference-Editor/debugger-autosave里可以改设置。

6.mat文件:

mat数据格式是matlab的数据存储的标准格式。

可以调用matlab的子程序库,用cfortan调用mat格式的数据。

matopen 打开mat文件

matclose 关闭mat文件

magetfp 取得mat文件的c语言句柄

matGetArray 取得一个数组

 

 

转载于:https://www.cnblogs.com/milier-otw/archive/2013/03/11/2954271.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值