详细讲解基于COM组件的VC和MATLAB混合编程

详细讲解基于COM组件的VC和MATLAB混合编程

ID:41032875

大小:202.50 KB

页数:6页

时间:2019-08-14

详细讲解基于COM组件的VC和MATLAB混合编程_第1页
详细讲解基于COM组件的VC和MATLAB混合编程_第2页
详细讲解基于COM组件的VC和MATLAB混合编程_第3页
详细讲解基于COM组件的VC和MATLAB混合编程_第4页
详细讲解基于COM组件的VC和MATLAB混合编程_第5页
资源描述:

《详细讲解基于COM组件的VC和MATLAB混合编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、基于com组件的VC和MATLAB混合编程一、MATLAB下做COM组件由于MATLAB的编译器只能对函数M文件进行编译,所以如果原来的程序是脚本程序应改写成函数形式。同一个M文件还可以包含多个函数,此时将出现在文件中的第一个M函数称为主函数,其余的函数称为子函数,M函数文件的名称一般与主函数的名称保持一致,其它函数都必须按照函数的基本结构来书写,例如建立一个M函数文件function[a]=msadd(x,y)a=x+y;保存文件名为msadd.m在MATLAB命令行中输入deploytool命令启动MATLABComBuilder图形用户界面,在其文件菜单中选择F

2、ile->NewProject点击最左上角新建一个工程:注意:工程保存路径最好在硬盘一级目录下,工程名尽量简单,不要超过8个字母。新建一个M3add的工程在D盘下系统生成一个M3add.prj的文件和一个名为M3add的文件夹工程建好后,系统自动生成一个与工程名相同的类,下图中为M3add的文件夹,这个文件夹经编译后,导入VC就是一个类,注意:这里要把与工程名相同的类删除再增加一个不同名的类,或改名,总之工程名与类名不能相同,否则导入VC后,最后编译时会报错,overload之类的。这里新增加了一个M4add类,在这个类下面增加m函数文件。注意:如果是神经网络,则只能

3、是训练好的神经网络。函数中最好不要用图形显示的语句。图形显示和VC的交互更加复杂,这里暂不讨论。然后编译:编译完成后,关闭Matlab。Matlab的工作到此完成。二、设置VC++1、准备文件:(1)如果未曾对mwcomutil.dll进行过注册,在系统开始->运行中输入cmd,则进入DOS在Dos状态下输入regsvr32mwcomutil.dll对其进行注册,mwcomutil.dll在/bin/win32下。(2)打开VC++编译器,点击:工具→ole/comobjectviewer,在弹出对话框左边列表中找到MATLABCOMBuilder

4、Components并展开,找到“M4add”,这里出现的是类名再点右键,选择ViewTypeInformation,便又弹出一窗口,点工具栏上的save按钮,分别将它保存为M3add_1_0.h和M3add_1_0.c。注意:应保存在默认的目录下,如果默认的目录文件夹路径过于复杂或名称太长有可能不能存这个两文件。(3)新建一个基于对话框的VC工程名为:Vc2add拷贝以下几个文件到Vc2add目录。设置Vc,现在需对PrecompiledHeaders进行设置:工程→设置→c/c++→Y分类中选择PrecompiledHeaders,接着选择M自动使用与补偿页眉,在

5、其中填写stdafx.h,最后确定。并将M3add_1_0.c、M3add_1_0.h和mwcomutil.h添加进工程,Project→AddToProject→Files分别生成_IID、IM4add和IMWUtil三个类,其中M4add类正是要操作的类。在对话框的文件头中加入以下内容://#import"mwcomutil.dll"#import"M3add_1_0.dll"#include"mwcomutil.h"#include"M3add_1_0.h"#include"comutil.h"在按钮单击响应事件中添加代码voidCVc2addDlg::OnBu

6、tton1(){//TODO:AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);//更新,把输入框中的值更新到变量中if(FAILED(CoInitialize(NULL)))//初始化调用com{AfxMessageBox("unabletoinitializeCOM");return;}//得到COM对象的CLSIDCLSIDCLSID_M4add;HRESULThr;hr=CLSIDFromProgID(L"m3add.m4add",&CLSID_M4add);//创建一个COM对象的实例IM4a

7、dd*st=NULL;hr=CoCreateInstance(CLSID_M4add,NULL,CLSCTX_ALL,IID_IM4add,(void**)&st);//定义参数,与com件交互只能用VARIANT类型数据VARIANTA,x,y;//初始化,一定要初始化不然报错VariantInit(&A);VariantInit(&x);VariantInit(&y);x.vt=VT_R8;x.dblVal=m_x;y.vt=VT_R8;y.dblVal=m_y;//调用MATLAB中的函数if(st!=NULL){//调用COM组件,第一个参数

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。