VC++与MATLAB混合编程COM组件法

上传人:jin****ng 文档编号:165417365 上传时间:2022-10-27 格式:DOCX 页数:9 大小:583.63KB
收藏 版权申诉 举报 下载
VC++与MATLAB混合编程COM组件法_第1页
第1页 / 共9页
VC++与MATLAB混合编程COM组件法_第2页
第2页 / 共9页
VC++与MATLAB混合编程COM组件法_第3页
第3页 / 共9页
资源描述:

《VC++与MATLAB混合编程COM组件法》由会员分享,可在线阅读,更多相关《VC++与MATLAB混合编程COM组件法(9页珍藏版)》请在装配图网上搜索。

1、COM 是 component object module 的简称,它是一种通用的对象接口,任何语 言 只要 按照 这种 接口 标准 , 就 可以 实现 调用 它。 matlab6.5 新推 出来 的 combuilder 就是把用 matlab 编写的程序做成 com 组件,供其他语言调用。该 方法实现简单,通用性强,而且几乎可以使用Matlab的任何函数(注意:不支持 脚本文件,脚本文件使用时要改为函数文件), 因此在程序较大、调用工具箱函 数或调用函数较多时推荐使用, 这也是Matlab公司(Matlab公司就是 Mathworks公司)推荐的使用方法。COM(Compponent Ob

2、jectModel 组件对象模型)是一项比较复杂的技 术,详细讲的话几本书也讲不完,所以在这里不作介绍, 本文通过一个例子详 细介绍如何在matlab下做COM组件,以及如何在VC中调用COM组件。首先在Matlab编辑器里编辑m函数文件 启动matlab-File-New-M-file 函数内容如图 1: 该函数无输入输出参数, 文件保存为 huatu.m。function huatu()x=-10:0.1:10;y=sin(x);plot(x,y);在 matlab 下建立 COM 组件, 步骤如下:1、在 matlab command window 输入如下命令: deploytool出

3、现以下界面:2、新建工程:File-New Deployme nt Project ;弹出选择对话框如下图3、左侧选择 Matlab Builder NE,右侧选择 Generic COM Component;4、Name中输入工程名(比如hello4.prj);单击OK;出现下面界面5、右击hello4选择rename class可以改为合适的类名(比如huatu,这里 没改);6、右击hello4class选择add file添加huatu.m文件(必须是函数文件); 添加后如下图7、点击 Tools-Build。编辑中的界面如下编译完成后界面如下,显示成功信息。Current Direc

4、tory: I C:Documents and SettingsAdministratorMy DocumentsMATLAB 3) S f)Current Directory ,4- m x 翁已止I国PT MATLAB 7.5.0 (R2007b)File Edit Tools Project Debug Distributed Desktop Window Help 百已肆 0叫拘国詁I的Shortcuts 回 How to Add 回 Whats NewCommand WindowAll Files門 huatu.m童 hello.prj* |附TypeM-filePR.J File

5、link n/out:C:Docwnents and SettingsAdministratorMy DocwnentsMATLABCommand HistoryCreating library C:Documerrts and SettingsAdministratorMy DocumentsMA1j-% 11-10-7 下午 10:26 %r匸口祇口口1 if exist C:DOCUMElADMDrTlLOCALSlTejnpmbuild_DDF919D5-06EO-49E9-:de st renrt ooldep lciyt 口口 1 deplojdzoolnrDeployment T

6、ool OutputDllRegisterServer in C:Documents and Settings AdministratorMy Documents MATLABhello4srchello4 1 0.dll suciCopying: C:Documents and SettingsAdministratorMy DocumentsMATUKBhello4srchello4_1_0.dll - C:Documents and SettingsAdministratorMyDo 匚 u m e nt sM.ATLAEih e Ilo4d i st ri bCopying: C:Do

7、cuments and SettingsAdministratorMy DocumentsMATUKBhello4srchello4.ctf- C:Documents and SettingsAdministratorMy D o c u m e nt sMATLABh e Ilo4d i st ri bCompilation completed succesfully. The output is located in C:Documents and SettingsVdministratorMy DocumentsMATLABhEllo4distrib.You can package th

8、e comp orient by clicking on the Package icon in the Deployme nt Tool toolbar, or by clicki ng the Tools-Package menu when the Deployment Tool panel is selected. To include additional files in the package, click Project-Settings).彳|冊匚 ompilation completed# Start到此为止, com 组件已经由 matlab 做好, 默认的保存在工程目录下

9、 的sre目录下,主要用到的文件为:mwcomtypesh、hello4_idlh和 hello4_idl_i.c。生成的文件在工作目录hello4src下,用到的主要是上述3个文件,工作目录下文件界面 如下 sre文件(巳編辑查看(刃收藏(工具(D帮助(出后退 0 丫/搜索 文展函build. Io g 文本文档11 KB寸目转到露移动所选项目fe复制所选项目将选择的项目发布到谢罰 以电子邮件形式发送所选项目删除所选项目缶 hello4fA我的文档 命共享文档J我的电脑*1网上邻居选择了3个项目口总的文件丈小:138 KB0 S 國 00Bhello4.defDEF文件1 KBhelled_

10、口 启:中EXP爻悴2 KB卜旧11口4|:1卜1 j C Header Fild 9阳hello4cll.c:C Source file 2悄hellcdclassjzorn.cppC+ Source File1 KBrriAicGrritypes.h 匚 Header file 圧 0 EE;readrne.txt 文本文档 10 KBdlldata. cC Source File1 KBhello4.rcResource Template1 KBhellu4_l_0.libLIE;掰半2 KBhello4.ctfCTF文件62 KBhello4_l_0.dllhello4川,idIDL

11、File1 KBhelledd_p 工C5o20 KIhelloHPP File1 KEirriwcorntypes工 匚 Snurce File2 KB类型:C Source file修改日期:2011-10-8 0:16 夭小:19.0 KBhello 斗 _dll,中 pC+ bource File2 KBhello4 _idl,tlbType Librdry2 KBhello4_rni:i:j:ornponent_dat-3 .cC Sourre file7 KBmccExcludedFiles.lo 口文本文档_71 KE;3!匚 omtypesji.c 匚 Sour re File

12、487 KB New to MATLAB? Watch this Video, see Demos, or read Getting Started,麗ablclES0sil 醱矗H國旦國 k屉aF國函令b回鬥垃睡F面开始记录VC+中调用COM组件的方法VC 中调用 COM 组件,步骤如下:1、在 VC 中建立名为 good1 的基于对话框的 MFC(exe)2、面板上添加一个名为“ 画图” 的 button 按钮, 如图。Fv goodl - Microsoft Visual C+ - goodl.rc - IDD_GOOD1 .DIALOG (Dialog)憎| 3關嘲| 电屆| G 分

13、|画国诸|軸JjcGoodlDIg3J|DC BUTTON1FpOnButtonlON IDC BUTTOIT二殴喜翳讓 01|EHz3 goodl resources曰“耳 Dialog?関 IDD_ABOUTBOX; JlDD_GQOD1_DIALOG|Bl-Q IconEl口 String TableEF口 VersionConfiguration: goodlConpilinggoodlDlg.cppGenerating CodeConpilinghello3_idl_i.cGenerating CodeLinking_1goodl .exe - 0 error(s), 9 warni

14、ng(s)4l h组建/调试在文件1中查找在文用4 I|冒11黑禹桿詁|匣1 EE |帆M包El屈|卷同就绪lt:i 123, 79口 50x14艮.*CI&ssView|lResourceV.“jl File View3 、将 mwcomtypes.h、 hello4_idl.h 和 hello4_idl_i.c 文件拷贝到 VC 建立的工程goodl目录下。三个文件默认目录为.hello4src4、将上面两文件加入工程:工程- 添加工程-Files,选择刚刚拷到目录下的mwcomtypes.h、 hello4_idl.h 和 hello4_idl_i.c 文件。如下图,图中阴影部分名称不是

15、hello3而是hello4 (下面的图中均是如此)确定 Iu wrE=日圉旦國 令回戸*一MC-申“置 Source Files 巴 goodl.cpp *j yuudl .rt Q goodIDIg.cpp kiiirairTiflg Hl StdAfx.cpp E Header Files =ll yuudl -h冒 goodlDIg-h 黑US)漏|疇L圜 Resource.h 11 StdAfx.h B-Bl Resource Files圍 ReadMe.txtEHB External Dependencies取消.叱 Classiev/ 圏 Resourced.5、为程序添加头文件

16、 hello4_idl.h 和 mwcomtypes.h,并添加 hello4_idl_i.c;7、按钮画图函数添加代码:void CGood1Dlg:OnButton1()/ TODO: Add your control notification handler code here CoInitialize(NULL);Ihello4class * pImyclass;HRESULT hr=CoCreateInstance(CLSID_hello4class,NULL,CLSCTX_ALL,IID_Ihello4clas s,(void *)&pImyclass);hr=pImyclass-

17、huatu();函数代码的意义涉及到COM,正在写VC调用COM组件所涉及到 的有关 COM 方面的知识。&设置预编译头文件:工程-设置(快捷键Alt+F7),选择C/C+项precomplied Headers:可以选择第一项或第二项。如图9、编译、连接、运行。可以看出利用 VC 调用 com 组件的方式来调用 matlab 比较简单, 而且几 乎支持matlab所有的函数,在m文件较大、用matcom、调用math library或 使用 mcc 方式无法实现的时候, 推荐使用。需要说明的是, 以上程序拷到另 一台机器上是无法直接运行的, 因为 COM 组件没有新机器上注册, 如果要在 另一台机器上使用的话, 还需要打包安装 COM 组件。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!