vs和MatlabRb混合编程使用COM组件Word文档格式.docx
- 文档编号:18525646
- 上传时间:2022-12-19
- 格式:DOCX
- 页数:10
- 大小:818.22KB
vs和MatlabRb混合编程使用COM组件Word文档格式.docx
《vs和MatlabRb混合编程使用COM组件Word文档格式.docx》由会员分享,可在线阅读,更多相关《vs和MatlabRb混合编程使用COM组件Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
不支持脚本文件,脚本文件使用时要改为函数文件),
因此在程序较大、调用工具箱函数或调用函数较多时推荐使用,
这也是Matlab
公司(Matlab
公司就是Mathworks公司)推荐的使用方法。
COM(Compponent
ObjectModel
组件对象模型)是一项比较复杂的技术,详细讲的话几本书也讲不完,所以在这里不作介绍,
本文通过一个例子详细介绍如何在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
2、新建工程:
Target选择Generic
Component;
弹出选择对话框如下图
3、点击AddClass添加工程类,然后点击Addfiles添加编写的.m文件,如下图所示
4、对于在没有装Matlab的电脑上,运行混编软件,需要装MCR(MatlabCompilerRuntime),它是一组独立的共享库,可用于在未安装MATLAB的计算机上执行编译后的MATLAB应用程序或组件,如下图所示
---------------->
5、最后点击编译与打包命令,生成最终的com组件,如下图所示,生成成功。
6、在工程文件夹内,有distrib与src两个子目录与hutu_pkg.exe
distrib目录下面,_install.bat批处理文件,双击注册huatu_1_0.dll这个Com组件(也可以在开始--->
运行,输入regsvr32
XXX.dll注册,要卸载COM组件输入regsvr32-u
XXX.dll),如下图所示。
在工程目录中,生成一个exe文件,文件大小>
170M,此文件是MCR安装包+Com注册组件,在未安装Matlab电脑中需要安装,如下图所示
----------------------------------------------华丽的分割线--------------------------------------------------------
----------------------------------------以上部分是Matlab端生成Com组件详细方法---------------------------
到此为止,com
组件已经由matlab
做好,
默认的保存在工程目录下的src目录下,主要用到的文件为:
mwcomtypes.h、huatu_idl.h
和huatu_idl_i.c。
下面开始记录VC2010中调用Matlab生成的COM组件的方法
VC
组件,步骤如下:
1、在VS2010中建立名为testcom的基于对话框的MFC(exe)。
2、面板上添加一个名为“
画图”
的button
按钮。
3
、将mwcomtypes.h、huatu_idl.h
和huatu_idl_i.c
文件拷贝到VC
建立的工程
目录下。
三个文件默认目录为…\huatu\src,如图所示
4、将上面两文件加入工程:
工程->
添加工程->
Files,
选择刚刚拷到目录下的mwcomtypes.h、huatu_idl.h
文件。
5、VS2010软件中,菜单--->
工具选项,没有VC6中的OLE/COM对象查看器,要自己手动添加,选择
菜单--->
外部工具--->
添加(OleView.exe目录如下所示),如下图所示
命令目录为:
C:
\ProgramFiles(x86)\MicrosoftSDKs\Windows\v7.0A\Bin\OleView.exe
6、点击Ole/ComObject
Viewer查看器,点击MATLAB
COMBuilderComponents---->
huatu,即为刚才注册的Com组件,卸载Com组件后就不会出现(注:
在生成新的Com组件前一定要先卸载老版本的组件,不然会出现问题)
VS2010中会出现下列问题:
问题:
右键huatu,选择ITypeLibViewer,点击保存按钮,保存组件的.c
与.h
文件,会出现不能保存的情况,如下图所示。
解决方案:
在VS2010下,很多时候,点击保存后,不能生成.h与.c文件,略过这个步骤,拷贝src目录下的*_idl.h和*_idl_i.c这个两个文件,代替Saveas的*.h和*.c文件。
7、添加三个文件到工程后,右键*_idl_i.c属性--->
预编译头--->
不使用预编译头,此C文件在MFC中与其他Cpp文件不能用stdafx.h预编译。
8、编写*Dlg.cpp
文件
添加头文件包含:
#include
"
mwcomtypes.h"
#include
hutu_idl.h"
按钮响应函数中添加:
如下图所示,在Com查看器中找到接口函数的名称,此处为Ihuatu。
源码:
void
CtestcomDlg:
:
OnBnClickedButton1()
{
//TODO:
在此添加控件通知处理程序代码
CoInitialize(NULL);
Ihuatu*ptestCom;
HRESULThr=CoCreateInstance(CLSID_huatu,NULL,CLSCTX_ALL,IID_Ihuatu,(
**)&
ptestCom);
hr=ptestCom->
huatu();
}
最后编译运行,结果如下图:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vs MatlabRb 混合 编程 使用 COM 组件