Matlab产生COM组件的调用

1 COM概述
(1)组建对象模型是一种软件架构,它允许应用软件可以由不同软件制造商的组件产品来构建。
(2)COM技术解决的一个基本问题就是如何设计一个系统,使得不同软件开发商在不同时间和地点开发的代码能够协同操作以及共享二进制代码。
(3)COM有别于C++语言中的对象。C++对象是对于实际问题的一种抽象,是软件开发的一种手段。而COM提供了一种可以共享二进制代码的工业标准。
(4)COM给软件开发人员提供了一种共享二进制代码的方法,这种共享不局限于某一种编程语言,COM的代码共享有别于软件开发源代码的共享与重用,因为源代码得共享只能局限某编程语言。
2 Matlab的COM编译器
2.1 Matlab编译器简介
使用Matlab编译器将Matlab应用程序转换成方便使用的COM对象,在其他语言编写的程序中使用这些组件对象。
COM编译器工作原理:利用Matlab编译器把Matlab程序转换成C/C++程序,同时产生与COM有关的包装代码,然后调用外部编译器来产生COM对象。
2.2 运行Matlab COM编译器的必要条件
Matlab的COM编译器是利用M编译器来把M程序转换成C/C++源程序的,然后调用外部C++编译器来编译,生成COM对象,Matlab的COM编译器对运行环境要求几乎和M编译器所要求的一样。M的COM编译器所能转换的M函数完全由M编译器决定。但是并不是所有M函数都可以被转换成C/C++代码,所以调用这些函数的M程序也不能被编译成COM对象。
M的COM 编译器也需要一个外部编译器来产生最终的组件对象。目前M的COM编译器只支持微软公司的Visual C++6.0(Visual studio 6)、7.0(Visual studio.Net 2002)和7.1(Visual studio.Net 2003)。所以在使用Matlab的COM编译器创建COM组建前必须确保已经安装了某个版本的Visual C++,并且在M环境中使用mbuild命令成功设置了该编译器。
3 Matlab COM编译器创建COM组件
comtool是一个图形界面的M工具
使用comtool编译COM组件的过程包括如下四步:
(1)创建一个new工程,或打开一个已经存在的工程
(2)给工程加入需要的M程序或MEX文件
(3)编译工程
(4)打包和发布产生的COM组件

编译结束后产生的COM组件只能在当前计算机上使用,为了能把它发布到其他计算机上使用,还需要其他一些支持文件。另外COM组件不同于普通的DLL文件,COM组件必须注册后才能在计算机上使用。
选择component-->Package component命令,comtool将会把发布该组件所需要的所有文件打包到一个和工程同名的可执行文件中,在这里可选择是否在打包文件中包含MCR,M7.x产生的COM组件必须运行在MCR环境。如果目标计算机上没有安装MCR ,则选择“包含MCR”这样在打包文件中会包含MCR的安装文件。
假设打包文件名为testmyadd.exe,如下所示:
testmyadd.exe文件中包含4个文件:
                                 _install.bat
                                 testmyadd_1_0.dll
                                 testmyadd.ctf
                                 MCR Installer.exe
将testmyadd.exe复制到需要发布的computer上后运行。
结果将会把这4个文件解压,并执行_install.bat(这是个DOS批处理文件)查看他的内容可以发现:_install.bat将会运行MCR Installer.exe来安装MCR,并且在系统中注册组件testmyadd_1._0.dll
注意:可以在VC++6.0中Tools-->,OLE/COM Object viewer中查看.dll接口的定义,产生IDL文件。


matlab与C#混合编程之最初体验——生成COM组件以供程序来调用。

转载于:https://www.cnblogs.com/springjin916/archive/2008/07/14/1242898.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值