MCC学习总结
本文來(lái)自:?高校自動(dòng)化網(wǎng)(Www.zdh1909.com)?詳細(xì)出處參考(轉(zhuǎn)載請(qǐng)保留本鏈接):http://www.zdh1909.com/html/matlab/16654_2.html
?
? mcc是調(diào)用matlab編譯器的命令,你可以從matlab命令行或者DOS,UNIX命令行調(diào)用它。它用于將M文件部署到Matlab運(yùn)行環(huán)境外,產(chǎn)生在C和C++里的(wrapper)文件,和有選擇的建立獨(dú)立的二進(jìn)制文件。默認(rèn)情況下,它將所有結(jié)果文件寫(xiě)入當(dāng)前文件夾。如果指定了多個(gè)M文件,編輯器將為每個(gè)文件殘生一個(gè)C或C++的函數(shù)。如果C或目標(biāo)文件被指定,他們將連通產(chǎn)生的所有C文件被送到mbuild。
?
mcc?[-options]?mfile1?[mfile2?...?mfileN]?[C/C++file1?...?C/C++fileN]
選項(xiàng):
?
-a:加入到檔案文件。
?
添加一個(gè)文件到CTF檔案文件。使用
CODE:
?
-a?filename
將一個(gè)文件直接加入到CTF檔案文件。可以多次使用-a選項(xiàng)。編譯器會(huì)在matlab路徑中尋找這些文件,所以指定完整路徑是可選的。這些文件不會(huì)被送到mbuild,所以,你可以包含類(lèi)似數(shù)據(jù)文件的文件。
?
-b:產(chǎn)生Excel兼容的公式函數(shù)。
?
產(chǎn)生一個(gè)VB文件(.bas)包含Excel公式函數(shù)接口的COM對(duì)象。當(dāng)被導(dǎo)入到工作表VB代碼,這些代碼將允許matlab函數(shù)作為一個(gè)單元格公式函數(shù)來(lái)使用。這需要matlab的Excel編譯工具。
?
-B:指定包文件(bundle?file)。
?
在mcc命令行,將文件替換為制定文件的內(nèi)容。使用
CODE:
?
-B?filename[:?<a1>,?<a2>,?...,?<an>]
這個(gè)包文件名,應(yīng)該僅包含mcc命令行選項(xiàng)和對(duì)應(yīng)的參數(shù)或者其他文件名。這個(gè)文件還可以包含其他-B選項(xiàng)。
?
-c:只產(chǎn)生C代碼。
?
當(dāng)此選項(xiàng)同一個(gè)宏被調(diào)用時(shí),將產(chǎn)生C代碼,但是不調(diào)用mbuild,也就是,不產(chǎn)生單獨(dú)的可執(zhí)行程序。等價(jià)于放在mcc命令行后的-T選項(xiàng)。
?
-d:指定輸出文件夾。
-f:指定選項(xiàng)文件。
-g:產(chǎn)生調(diào)試信息。
-I:添加文件夾到Path。
-m:產(chǎn)生一個(gè)可單獨(dú)運(yùn)行的文件。
-M:直接傳遞。
-N:清空Path。
-o:指定可執(zhí)行文件名。?
-p:將文件夾加入到Path。
-R:運(yùn)行時(shí)。?
-T:指定目標(biāo)階段。
指定輸出文件的目標(biāo)階段和類(lèi)型。使用
CODE:
-T?target
來(lái)定義輸出類(lèi)型。合法的目標(biāo)值是:
codegen
compile:exe
compile:lib
link:exe
link:lib
?
-v:顯示詳細(xì)信息。
-w:顯示警告信息。
-W:指定包裝函數(shù)類(lèi)型。
控制產(chǎn)生函數(shù)包裝。使用
CODE:
-W type
來(lái)控制產(chǎn)生的M文件函數(shù)的包裝類(lèi)型。你提供一個(gè)函數(shù)列表,編譯器將產(chǎn)生這些函數(shù)的保證和任何適當(dāng)?shù)娜肿兞康亩x。下面是合法的type參數(shù)。
main:產(chǎn)生一個(gè)POSIX腳本main()函數(shù);
lib:<string>:產(chǎn)生一個(gè)初始化和終止函數(shù),用于編譯器產(chǎn)生的函數(shù)被編譯進(jìn)一個(gè)大的程序。這一選項(xiàng)同樣產(chǎn)生一個(gè)頭文件,包含指定M文件所有函數(shù)的原型。<string>成為產(chǎn)生的C/C++文件和頭文件的基礎(chǔ)文件名。創(chuàng)建一個(gè).exports文件,包含了所有非靜態(tài)函數(shù)名。
com:<component_name>,<class_name>,<version>:從M文件產(chǎn)生一個(gè)COM對(duì)象。
none:不產(chǎn)生包裝文件,默認(rèn)為none。
?
-Y:license文件。
-z:指定路徑。
?
為myfun.m產(chǎn)生一個(gè)可執(zhí)行文件:
CODE:
?
mcc?-m?myfun
為myfun.m產(chǎn)生一個(gè)可執(zhí)行文件。myfun.m文件在/files/source文件夾,并將結(jié)果C文件和可執(zhí)行文件放到/files/target文件夾:
CODE:
?
mcc?-m?-I?/files/source?-d?/files/target?myfun
使用一個(gè)mcc調(diào)用為myfun1.m和myfun2.m產(chǎn)生可執(zhí)行文件:
mcc?-m?myfun1?myfun2
?
為a0.m和a1.m創(chuàng)建一個(gè)共享/動(dòng)態(tài)鏈接庫(kù),叫liba:
CODE:
?
mcc?-W?lib:liba?-T?link:lib?a?0?a1
?
?
?
下文轉(zhuǎn)自:
?
?http://wenku.baidu.com/view/06f283c62cc58bd63186bd9a.html
1.當(dāng)MATLAB用戶(hù)一開(kāi)始并不知道當(dāng)前版本的MATLAB?Compiler所支持的編譯器類(lèi)型有哪些時(shí),需設(shè)置編譯環(huá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
?
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
至此,環(huán)境配置已經(jīng)完成了.
2.簡(jiǎn)單也最常用的生成獨(dú)立.EXE文件命令:
mcc?-m?m文件名(如果主程序調(diào)用子程序時(shí),要一起寫(xiě)進(jìn)去)
例如:
mcc?-m?pure?ssimplex?my_closereq
其中,pure,調(diào)了子程序ssimplex和?my_closereq
3.可在它端計(jì)算機(jī)獨(dú)立運(yùn)行運(yùn)行的方法:
(1)方法一:就生成了獨(dú)立EXE文件pure.m,把它與pure.ctf文件一起復(fù)制到MATLAB的安裝目錄\toolbox\compiler\deploy的目錄中,或者也可以在每次編譯后產(chǎn)生的mcr目錄內(nèi)的\toolbox\compiler\deploy的目錄中搜索到.把deploy文件復(fù)制到它端計(jì)算機(jī),都可以運(yùn)行EXE文件.
(2)方法二:把MATLAB的安裝目錄\toolbox\compiler\deploy\win32的MCRInstaller.exe文件復(fù)制把在它端計(jì)算機(jī),并安裝之,就可以把生成的獨(dú)立執(zhí)行exe文件復(fù)制過(guò)去,即可獨(dú)立運(yùn)行.
4.MATLAB保護(hù)文件(.p):
?
(1)編譯后的P文件比原與文件有相同的文件名,只是其擴(kuò)展名為.p。而在MATLAB環(huán)境中P文件有比M文件較高的調(diào)用位級(jí),因此如果MATLAB中存在相同文件名的P與M文件,則會(huì)以P文件為優(yōu)先的調(diào)用順序。
(2)P文件有兩大優(yōu)點(diǎn):①增加文件的執(zhí)行速度②能夠?qū)⑽募C堋R缘?/span>2點(diǎn)最為重要。P文件與M文件執(zhí)行上的功能與操作方式都是一樣的,但最大的不同是P文件無(wú)法閱讀文件內(nèi)容,因此可以很輕易地保持文件內(nèi)容不外泄的效果。
(3)P文件的編譯方式如下:pcode?文件名
例如,將compiler_test.m這個(gè)文件編譯為P文件就必須輸入以下的程序:pcode?compiler_test
(4)當(dāng)輸入compiler_test時(shí),調(diào)用的是compiler_test.p,而不是compiler_test.m,因?yàn)?/span>P文件的優(yōu)先度高于M文件件.
(5)P文件可以用來(lái)作保密代碼之用,如果你給別人一個(gè)M文件,別人可以打開(kāi)來(lái)看到你所有的代碼和算法。如果你的代碼不想被別人看到,那可以給他P文件。
(6)當(dāng)用GUI做界面時(shí),給P文件的同時(shí)也應(yīng)該給.fig文件才能夠運(yùn)行得了.pcode函數(shù)也可以應(yīng)用在M函數(shù)文件。
5.asv文件:
后綴為asv的文件是.m文件自動(dòng)保存的時(shí)候產(chǎn)生的臨時(shí)文件,程序非正常退出的時(shí)候恢復(fù)用的,可以用記事本打開(kāi)看一下,如果matlab正常關(guān)閉的話,刪掉沒(méi)影響。
在file-preference-Editor/debugger-autosave里可以改設(shè)置。
6.mat文件:
mat數(shù)據(jù)格式是matlab的數(shù)據(jù)存儲(chǔ)的標(biāo)準(zhǔn)格式。
可以調(diào)用matlab的子程序庫(kù),用c或fortan調(diào)用mat格式的數(shù)據(jù)。
matopen?打開(kāi)mat文件
matclose?關(guān)閉mat文件
magetfp?取得mat文件的c語(yǔ)言句柄
matGetArray?取得一個(gè)數(shù)組
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/milier-otw/archive/2013/03/11/2954271.html
總結(jié)
- 上一篇: 问模板函数、函数模板,模板类、类模板的区
- 下一篇: IBM存储部分常见配件PN号查询及描述翻