VC++与MATLAB接口编程方法与实现(转)

上传人:油条 文档编号:1950900 上传时间:2017-07-17 格式:DOC 页数:7 大小:93.51KB
返回 下载 相关 举报
VC++与MATLAB接口编程方法与实现(转)_第1页
第1页 / 共7页
VC++与MATLAB接口编程方法与实现(转)_第2页
第2页 / 共7页
VC++与MATLAB接口编程方法与实现(转)_第3页
第3页 / 共7页
VC++与MATLAB接口编程方法与实现(转)_第4页
第4页 / 共7页
VC++与MATLAB接口编程方法与实现(转)_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《VC++与MATLAB接口编程方法与实现(转)》由会员分享,可在线阅读,更多相关《VC++与MATLAB接口编程方法与实现(转)(7页珍藏版)》请在金锄头文库上搜索。

1、VC+与 MATLAB 接口编程方法与实现(转)2008-07-08 22:14摘 要 本文简介了 VC+和 MATLAB 特点,探讨了 MATLAB 与 VC+接口编程的三种方法,并详细论述了 MCC 和COM 组件接口编程的方法和实现过程。研究表明:采用 VC+和 MATLAB 接口编程方法降低了编程难度,较好地发挥了两者各自的优势。 关键词 MATLAB;VC+;MCC ;COM;接口编程MATLAB 是美国 MathWorks 公司研制开发的一种科学计算软件,它将高性能的数值计算、符号计算和可视化集成在一起,并提供了大量的内置函数以及功能丰富的工具箱,使用方便,编程效率高。然而,MAT

2、LAB 是一种解释性语言,运行效率低,不适合作为通用的编程平台。VC+是 Microsoft 公司推出的一个基于 Windows 平台的可视化的集成开发环境,在运行速度、功能性以及应用程序界面开发方面功能强大,但在数值计算和图形绘制方面,VC+并不具备太多优势。因此,采用 MATLAB 进行核心程序的开发,用 VC+制作出友好的程序界面,然后将两者结合起来,可以较大地提高编程效率。1VC+与 MATLAB 接口方法概述1.1 MATLAB 引擎方式MATLAB 引擎采用客户机/服务器(Client/Server) 的方式,提供了一组 MATAB API 函数,通过调用这些函数实现以用程序进程之

3、间的数据传递。在运用中,让 VC+程序作为前端客户机,它向 MATLAB 引擎传递命令和数据,并从MATLAB 引擎接受数据信息,实现动态通讯。1.2 MATLAB 编译器(MCC)MCC 是 MATLAB 中经过优化的编译器。使用 MCC,用户可以将 MATLAB 数学库、图形库和界面的 MATLAB 程序转化为独立于 MATLAB 的 EXE 应用程序和 DLL 动态连接库,在 VC 中编写程序界面并加载调用动态连接库,实现两者之间的连接。1.3 COM 组件组件对象模型(简称 MCR)是以组件为发布单元的对象模型。它提供一种可以共享二进制代码的工业标准,允许任何符合标准的程序访问,所以

4、COM 作为不同语言之间的协作开发是非常方便的。MATLAB 的 COM 编译器是在MATLAB6.5 中才开始提供的一个新工具,从 MATLAB7.0 起,这个产品改名为 MATLAB Builder for COM。基于 COM的混合编程方法也是 Mathworks 公司推荐使用的方法。以上三种方法中,采用 MATLAB 引擎方式,应用程序整体性能好,MATLAB 引擎支持功能全面,但需要 MATLAB后台运行,不能脱离 MALAB 环境。而 MCC 方法和 COM 组件方法均可以脱离 MATLAB 环境,应用程序运行效率高,利于软件的开发,本文将重点论述 MCC 和 COM 组件方法。2

5、MATLAB 编译器(MCC)2.1 MATLAB 与 VC+接口配置采用 MCC 方法需要对 MATLAB 和 VC+接口设置,配置步骤如下:1) MATLAB 编译器配置 首先在 MATLAB 命令提示符下输入 mbuild-setup 命令,选择编译器,(需要注意的是必须确保计算机上已经安装了某个版本的 VC+,本文选择 visual C+6.0)完成编译器设置。2) VC+环境设置(1)设定头文件和库文件路径。在 VC+环境菜单栏中选择 Tools-Options-Directories,在“Show directories for”栏中首先选择 Include files,然后在“d

6、irectories”中将ExternLibWin32 Microsoft MSVC+60 添加进去。再次在“Show directories for”栏中选择 Librarys files,再在 “directories”中添加ExternInclude。(2)设置编译连接选项。在 VC+环境菜单栏中选择 Project -setting,然后选择 link 选项卡,在 object/library modules 栏中添加 mclmcrrt.lib libtest.lib;选择 General 选项卡,在 Microsoft Foundation Classes 栏中选择 Use MFC

7、in a Shared Library。2.2 实例演示完成 MATLAB 和 VC+的接口设置以后,就可以实现 MATLAB 和 VC+的接口编程,具体步骤如下:1) 编写 M 函数文件“mypascal.m”function m=mypascal(n)m=pascal(n);m=m;示例 M 函数文件的作用是生成一个 n 阶的帕斯卡矩阵并返回,Pascal 矩阵特点:第一行和第一列的元素均为 1,其他位置的元素是前方的元素和上方的元素之和。需要注意的是:由于 MATLAB 中矩阵存储方式是以矩阵的列为先,也就是数据从第一列开始逐列存储的,而 C/C+中矩阵则是以第一行开始逐渐存储的,因此在

8、函数的最后一行对返回矩阵取转置运算,等效于使得计算得到的矩阵数据以行模式存储。2) 编译 M 文件在 MATLAB 命令行输入 mcc-B csharedlib:libtest mypascal.m-v 命令(或 mcc-W lib:libtest-T link:lib mypascal.m)将 m 文件编译成 C 共享动态链接库文件。命令执行完毕后,在当前目录中生成 C 头文件 (libtest .h) 、引入库文件 (libtest.lib) 、ctf(libtest.ctf) 文件、动态链接库文件 (libtest.dll) 、C 源文件 (libtest.c)等 8 个文件。3) 创建

9、工程对话框运行 visual C+创建一个对话框工程,取名为 test,接受所有默认的设置。去掉对话框上的静态文本和按钮,增加一个按钮、一个静态文本框、编辑框以及一个 List Control,鼠标右键单击 List Control,选择 Properties,把 View 改成Report,对话框界面如图 1 所示。给 List Control 控件添加 ClistCtrl 类的对象 m_List,给编辑框关联一个整型成员变量m_size,给按钮增加一个消息响应函数。图 14) 添加编译文件到工程将 mcc 编译生成的“libtest.h”、 “libtest.dll”、 “libtest.

10、lib”, “libtest.ctf”四个文件复制到工程目录,将 libtest.h 加入工程,并在对话框程序文件“testDlg.cpp”中添加头文件 “libtest.h”。5) VC+中调用动态连接库 在 OnInitDialog()函数中添加初始化 libtest.dll 进程的码:BOOL CTestDlg:OnInitDialog()CDialog:OnInitDialog() ;/ TODO: Add extra initialization hereif (!mclInitializeApplication(NULL, 0)AfxMessageBox(不能初始化程序!);exi

11、t(1);if (!libtestInitialize() AfxMessageBox(不能初始化连接库!) ;exit(1) ;return TRUE; / return TRUE unless you set the focus to a control 在 void CTestDlg:OnCreatebuttom()函数中添加以下代码,实现对 mypascal.m 的调用,并将计算结果显示在对话框界面中。void CTestDlg:OnCreatebuttom()/ TODO: Add your control notification handler code hereUpdateDa

12、ta(TRUE);double data;data=double(m_size);mxArray *size; /输入参数mxArray *out=NULL; /输出参数/创建 mxArray 数据对象,双精度标量size=mxCreateDoubleScalar(data);/内存复制赋值memcpy(mxGetPr(size),&data ,1*sizeof(double) ; mlfMypascal(1,&out,size);/函数调用/结果数据显示CString strtext;int i, j;/清除已显示的数据m_List.DeleteAllItems();intncolumn=m

13、_List.GetHeaderCtrl()-GetItemCount();for (i=0; itool-boxcompilerdeploy win32 目录之下,应用程序运行前要先点击运行 MCRInstaller.exe 文件,按照提示步骤安装好 MCR,然后将工程文件的可执行程序(.exe)、共享库(.dll) 以及其对应的 ctf 文件复制到目标计算机即可独立运行。3 COM 组件3.1 MATLAB 里创建 COM 组件使用 COM 组件 方法首先需要在 MATLAB 中创建 COM 组件,步骤如下:1) 创建 COM 组件在 MATLAB 命令窗口输入命令 comtool,打开 M

14、atlab Builder 对话框,它是 Matlab builder for com 的主要工作环境。点击 File-New Project,会弹出一个新工程设置对话框,填入组件名和类名,完成之后点 OK,完成新工程的创建。如果选择的工程所在目录并不存在,comtool 会提示该目录不存在,并询问是否创建该目录,选择 Yes,comtool 就会创建工程到该目录。2) 添加 M 文件到组件执行完第一步后回到 matlab builder 界面。点击刚才创建的工程,单击 Add files 按钮,将 M 文件添加到新建的组件类中。然后点击 Build-COM Object 编译当前工程的 CO

15、M 组件,这个步骤不仅编译了 COM 组件,同时也在计算机上注册了该组件,它可以像其他 COM 组件一样在 VC+中使用。编译完成以后在用户设置的项目目录下将产生两个子文件夹 src 和 distrib,src 里包含组件的源代码,distrib 里包含供用户最终发布使用的 COM 组件。3) 打包组件及 MCR编译结束后产生的 COM 组件只能在当前计算机上使用,为了能够把它发布到其他计算机上使用,还需要其他一些支持文件。另外,COM 组件不同于普通的 DLL 文件,COM 组件必须注册后才能在计算机上使用。选择 Component-package component 命令,comtool

16、将会把发布该组件所需要的所有文件打包到一个和工程同名的可执行文件中。这里可以选择是否在打包文件中包含 MCR。MATLAB7.0 产生的 COM 组件必须运行在 MCR 环境。如果目标计算机上没有安装 MCR,那么在打包组件的时候最好选择包含 MCR,这样在打包文件中就会包含 MCR 的安装文件。打包完成后将会在 distrib 中产生.exe 的可执行文件,这是一个可以自解压的压缩文件。其中包含 4 个文件:_install.bat,dll 文件,ctf 文件,MCRInstaller.exe。把产生的.exe 文件复制到需要发布的计算机上运行。结果将会把这四个文件解压,并执行_install.bat,这是一个 DOS 批处理文件,查看_install.bat 的内容后可以发现_install.bat 将会运行 MCRInstaller.exe 来安装 MCR,并且在系统

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号