浅析VC与Matlab联合编程(三)
2007-10-22 18:31
363 查看
浅析VC与Matlab联合编程<三> 作者: 在“ 实际上VC与matlab的接口实现方法有很多种,matcom只是其中一种,本文再介绍一种比较容易实现的方法:COM接口方法。COM(CompponentObjectModel组件对象模型)是一项比较复杂的技术,详细讲的话几本书也讲不完,所以在这里不作介绍,本文通过一个例子详细介绍如何在matlab下做COM组件,以及如何在VC中调用COM组件。 首先在Matlab编辑器里编辑m函数文件:启动matlab->File->New->M-file函数内容如图1:该函数无输入输出参数,文件保存为huatu.m。 图1m函数huatu.m 在matlab下建立COM组件,步骤如下: 1、在matlabcommandwindow输入如下命令: >>comtool 出现com编辑界面,如图2: 图2com组件编辑界面 2、新建工程:File->NewProject…,如图3。 图2com组件属性设置 3、设置组件属性,在"Componentname"项中填写组件名称"component",这时候会自动生成类"component",在"Classname"项中填写类名称"huatu",如图4, 图4com组件属性设置1 为了便于区分,选中"Classes"中的"component",点击“remove”按钮,将类component移除,再点击"Add>>"添加新类huatu,结果如图5。点击"OK",接下来出现一个对话框,选择"Yes". 图5com组件属性设置2 4.添加文件:选中左边工作区的"huatu",点击Project->AddFile…,选择已经编辑好的函数文件huatu.m,如图6。需要注意的是m文件必须是m函数,否则会报错,如果是m脚本文件的话,只需要改为无输入输出参数的m函数即可。 图6添加m文件 5、生成com组件:点击Build->COMObject…,结果如图7。 图7 com组件已经由matlab做好,默认的保存位置为:matlab安装位置/work/component。 VC中调用COM组件,步骤如下: 1、在VC中建立名为ComHuaTu的基于对话框的MFC(exe)。 2、面板上添加一个名为“画图”的button按钮,如图8。 图7工程界面 3、将component_idl.h和component_idl_i.c文件拷贝到VC建立的工程ComHuaTu目录下。两文件默认目录为/work/component/src 4、将上面两文件加入工程:工程->添加工程->Files,选择刚刚拷到目录下的component_idl.h和component_idl_i.c文件。 5、将目录/extern/include/下的mwcomtypes.h拷贝到工程ComHuaTu目录下,并加入到工程中,方法同上。 6、为程序添加头文件component_idl.h、component_idl_i.c和mwcomtypes.h,结果如图9 图9添加头文件 7、按钮画图函数添加代码: 图10添加按钮函数代码 函数代码的意义涉及到COM,正在写VC调用COM组件所涉及到的有关COM方面的知识。 8、设置预编译头文件:工程->设置(快捷键Alt+F7),选择C/C++项precompliedHeaders,设置如图11 图11预编译头文件设置 9、编译、连接、运行,结果如图12。 图11运行结果 可以看出利用VC调用com组件的方式来调用matlab比较简单,而且几乎支持matlab所有的函数,在m文件较大、用matcom、调用mathlibrary或使用mcc方式无法实现的时候,推荐使用。需要说明的是,以上程序拷到另一台机器上是无法直接运行的,因为COM组件没有新机器上注册,如果要在另一台机器上使用的话,还需要打包安装COM组件,并且由于本程序代码很简单,所以也就不提供源程序了,自己可以动手做一下。 本人正在写一本关于VC和matlab接口方面的书,估计年底完稿,详细介绍VC和matlab接口的几种方法,并提供详细的例子,例子都是我自己写过的,欢迎大家提供些好的意见和建议。 我的QQ:44760299, 邮箱:c_dinco@sina.com。 |
相关文章推荐
- 浅析VC与Matlab联合编程(二)
- 浅析VC与MATLAB联合编程(四)
- 浅析VC与Matlab联合编程
- 浅析VC与MATLAB联合编程
- 浅析VC与Matlab联合编程(二)
- Matlab VC 联合编程 控制台以及MFC中实现(二)
- 精通VC与MATLAB联合编程——综合举例二
- Matlab VC 联合编程 控制台以及MFC中实现(四)
- vc与matlab 联合编程
- 精通VC与Matlab联合编程(五)
- Matlab VC 联合编程 控制台以及MFC中实现(三)
- 精通VC与Matlab联合编程(六)
- Matlab VC 联合编程 控制台以及MFC中实现(五)
- 精通VC与Matlab联合编程(五)
- VC与Matlab联合编程常见问题集合
- 精通VC与MATLAB联合编程(七)
- 精通VC与Matlab联合编程(六)
- 精通VC与MATLAB联合编程<十>——综合举例二
- 精通VC与Matlab联合编程
- Matlab VC 联合编程 控制台以及MFC中实现(一)