《基于COM技术的MATLAB和VC实现混编》由会员分享,可在线阅读,更多相关《基于COM技术的MATLAB和VC实现混编(11页珍藏版)》请在金锄头文库上搜索。
1、COM组件的语言无关性:COM规范的定义不依赖于特定的语言。例如:用Java开发的COM组件对象,可以在 C+语言中被使用。1、MATLABCOM编译器用法MATLAB COM编译器通过将M程序转为C/C+源程序,然后再调用外部C+编 译器来实现编译、生成COM组件。在使用COM编译器之前,需要保证计算机安装了 MATLAB编译器和C+编译器。(1) 运行MATLAB COM编译器,耑要输入命令 mbuild -setup(2) 之后会出现如下提示:Welcome to mbuild -setup. This utility will help you set up a default com
2、piler. For a list of supported compilers, see Please choose your compiler for building shared libraries or COM components:Would you like mbuild to locate installed compilers y/n?(是否允l午 mbuild 加载已经安装的编译器)Note:直接按Enter键即可(3) 之后会列出计算机上安装的所有编译器:Select a compiler:1 Lcc-win32 C 2.4.1 in D:MATLABINSTALlsys
3、lcc21 Microsoft Visual C+ 2010 in d:ProgramFilesMicrosoftVisualStudio 10.00 NoneNote:由于我安装的是VS2010,所以直接在MATLAB命令窗口输入2.(4) 之后会让确定所选择的编译器是否正确:Please verify your choices:Compiler: Microsoft Visual C+ 2010Location: d:ProgramFilesMicrosoftVisualStudio 10.0Are these correct y/n?Note:直接按Enter键即可(5) 执行成功后会看
4、到以下提示 Trying to update options file:C:UsersAdministratorAppDataRoamingMathWorksMATLABR2012bcompopts.bat From template:D:MATLABINSTALlbinwin32mbuildoptsmsvcl00compp.bat Done.2、用MATLAB生成COM组件MATLAB COM编译器是一个图形界面编译器。(1)先写好MATLAB Code, M文件必须是函数。 例如:这是一个绘图函数function = pls_plot ( Yresiduals )figure ();ste
5、m(Yresiduals)在MATLAB命令窗口输入deploytoolxlabel (1 Observation 1); ylabel(1 Residual); end(2) 启动MATLAB COM编译器,MATLAB R2O12bHOMELi D FrdFles-SjEi ,/OpenVariaWe Run andTmeQ Set PaNew New Open Compareimport SaveSimufcnk LavouiScrpt Data Workspace Clear WorkspacePreferences fo么 Communty Hep Request SupportPb
6、 cvadiaoj pmnrSIMUUWENVIROMM-MT呢 SOURCES C: Users Administrator Desktop mixProgramDemo MFilesMATLAB当前目录Smulnk Layout Ctear Commands Library Parallel i New to MATLAB? Watch this Video, sec Examples, or read Getting Started, deplytoolUndefined function or variable deplytool*.Namemain.m3A matlab.mat的所有
7、文件plslot.msep.m Q plsregress.mDid you Mean:人 Deploytool!Deployment Project启动COM编译器Name: emo|prj4呈名称Location: C:U5er5AdministratorDc5lctopmixProgramDcmoM_files Type:m Generic COM Component 注琶别选择措!OKCancel启动沿,出现如下的图形界面编译器,点击Add Classes按钮Generic COM ComponentGeneric COM Component5 PLSDemo.prj Q jS PLSD
8、emo.prj 沒 I容BuildBuildClassesPlace functions here that you want to access from other programs (i.e., interface functions).Add classesClasses Classl Add filesAdd classes(3)点击Add files向工程中添加M文件,如果已经把M文件所在的目录设置为了MATLAB工作目录,那么点击Add files按钮就会直接打开当前R录。或者从Current Folder而板中直接拖拽到工程中。:妇 Desktop mixProgramDemo
9、 M.FilesCurrent FolderName鬱 main.m出 matlab.mat轉 pls.m截 pis一plot.mGeneric COM ComponentCOHPLSDemo.prjpls_plotjnsep.mPLSDemo.prj Q plsregress.mClasses()Classl盪 pls.m權 plsjolotmp 11mAdd filesAdd classesBuild Packagecommand Windowpls_plot_msep(recommen.Note:因为在我的C+程序中,我只用了三个函数,所以只放了三个函数文件进去(4)设置工程编译选项和工
10、程封装选项Generic COM ComponentPLSDemo.prjcommaBuildClassesPackage()Classl 截 pls.m Q pis一plotmpls_plotjnsep.mAdd filesAdd classe-New Project. Open Project. Rename ProjectAdd ClassAdd MCRQ Build I召 Package(3* Settings(?) Help(5)这里需要注意一点! !Note: Toolboxes On Path设置页,主要用來指出编译时需要搜索哪 Toolbox.因为 MATLAB的库函数是以To
11、olbox来归类的。这里选择的Toolbox越少,编译的速度就越快, 也会减少最后生成文件的空间。我写程序的时候并不能确定知道我调用的库函数到底归属哪 一个Toolbox因此所有Toolbox我都选上了。(6)编译工程Generic COM ComponentwCDMPLSDemo.prjBuild PackageNote:这个过程可能会比较慢!(7)发布COM文件冰 PackagePackage generation finished.v Show Detail(8)创建组件命令窗口输入:mcc -I pls.m Note:此过程可能会很慢。 aCurrent Folder NameS PL
12、SDemoyi main.m 田 matlab.matpls.mQ pls plot.m C: Users AdministratorDesktop mixProgramDemo CT New to MATLAB? WatcCommand Windowplsj3lot.msep.rn deplytool Undefined functionDid you mean: deploy!ool盈 PLSDemo.prj B PLSDemo_pkg.exe Q plsregress.mA mcc 一1 pis. mName田 PLSDemoNote:执行完成后,会多出一些文件,其中红色框的三个文件是我
13、们耑要的。 (9)同样的方法,对其他几个需要用到的阑数文件进行转换争 a异 c:Current FolderName 田 PLSDemol main.m ffl matlab.mat 2)pls.mpis;plsplot.msep.m PLSDemo.prj 2 PLSDemo_pkg.exe Q plsregress.mmain.mES matlab.matmccExcludedfilesJog)pls.c pls,d1T pls.exp_ pls.exports I Zl pls.h II |Q pls.m plsjalot.m一 pls_plot_msep.mPLSDemo.prj PLSDemo.pkg.exe plsregress.mreadme.txtiolution ExplorerAdditional Dependencies3、C+调用COM组件 (1)新建一个MFC工程(2)把之前生成的几个文件,复制到当前工作FI录,并添加进来 I. IASolu