本文来自: 高校自动化网(Www.zdh1909.com) 详细出处参考(转载请保留本链接):http://www.zdh1909.com/html/matlab/16654_2.html
mcc是调用matlab编译器的命令,你可以从matlab命令行或者DOS,UNIX命令行调用它。它用于将M文件部署到Matlab运行环境外,产生在C和C++里的(wrapper)文件,和有选择的建立独立的二进制文件。默认情况下,它将所有结果文件写入当前文件夹。如果指定了多个M文件,编辑器将为每个文件残生一个C或C++的函数。如果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函数作为一个单元格公式函数来使用。这需要matlab的Excel编译工具。
-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。
-Y:license文件。
-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.m和myfun2.m产生可执行文件:
mcc -m myfun1 myfun2
为a0.m和a1.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\win32的MCRInstaller.exe文件复制把在它端计算机,并安装之,就可以把生成的独立执行exe文件复制过去,即可独立运行.
4.MATLAB保护文件(.p):
(1)编译后的P文件比原与文件有相同的文件名,只是其扩展名为.p。而在MATLAB环境中P文件有比M文件较高的调用位级,因此如果MATLAB中存在相同文件名的P与M文件,则会以P文件为优先的调用顺序。
(2)P文件有两大优点:①增加文件的执行速度②能够将文件保密。以第2点最为重要。P文件与M文件执行上的功能与操作方式都是一样的,但最大的不同是P文件无法阅读文件内容,因此可以很轻易地保持文件内容不外泄的效果。
(3)P文件的编译方式如下: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的子程序库,用c或fortan调用mat格式的数据。
matopen 打开mat文件
matclose 关闭mat文件
magetfp 取得mat文件的c语言句柄
matGetArray 取得一个数组