预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第29卷第4期河南科技大学学报:自然科学版Vol.29No.4 2008年8月JournalofHenanUniversityofScienceandTechnology:NaturalScienceAug.2008 文章编号:1672-6871(2008)04-0050-04 基于VC++与MATLAB混合程序设计与应用 李云龙a,唐六丁a,邓四二b,韩宝财b (河南科技大学a.建筑工程学院;b.机电工程学院,河南洛阳471003) 摘要:针对VC++与MATLAB软件各自编程优势,提出了一种将MATLAB中编译的.m函数文件生成可脱离 MATLAB环境的动态连接库(DLL),并以具体实例说明了在VC环境中开发应用程序界面并调用动态链接 库,使VC界面和MATLAB编译的函数文件之间的参数得以传递,实现了两者的混合编程,为软件开发提供了 强有力的技术支持。 关键词:动态链接库;参数传递;混合编程 中图分类号:TP311文献标识码:A 0前言 VisualC++(以下简称VC)是Microsoft公司推出的强大的可视化集成编程环境,使用VC开发的 系统具有界面友好、代码效率高和执行速度快等一系列优点。同时VC语言支持面向对象的程序设计, 用VC编制的用户界面元素丰富而且可以定制,能够保证复杂界面的执行速度[1-2]。然而VC只提供了 一些基本的数学函数库,当遇到复杂的数值运算时,通过编程人员实现代码,将大大延长软件的开发周 期,增加软件开发成本,影响软件的性能。 MATLAB是MathWorks公司推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运 算、信号处理和图形显示于一体,构成了一个方便、界面友好的用户环境。然而MATLAB自身所存在的 某些缺点限制了它的应用范围,由于MATLAB是一种解释性语言,因此它的执行效率是比较低的, MATLAB程序不能脱离其环境运行,因此它不能被用于开发商用软件,而VC强大的可视化编程功能则 可以弥补这一缺陷,在VC软件中开发复杂的用户界面、数据采集和管理程序,对于数据的处理则希望 通过稳定的MATLAB程序来实现,通过VC和MATLAB的混合编程,必将充分发挥各自的优势,提高软 件开发效率,使开发的软件具有更高的性能,更广阔的应用领域。 1VC和MATLAB混合编程实现的方法 VC和MATLAB的结合方法有多种,但其使用的程度与范围不同。常用的方法有6种[3-5]:(1)VC 利用MATLAB引擎(Engine)调用MATLAB函数;(2)将MATLAB程序编译成VC文件并嵌入VC;(3) 使用matcom工具将.m函数文件转化成相同功能的C++文件并嵌入VC;(4)使用MATLAB在VC中的 Add-in插件,将MATLAB文件导入VC环境中;(5)使用MATLAB提供的C接口函数库或C++接口函 数库直接在VC中编程;(6)利用MATLABCOMPILER(编译器),将MATLAB的函数编译成可脱离 MATLAB环境的动态链接库(DLL),然后在VC中调用。其中前两种方法必须在安装了MATLAB的系 统上运行,在实际开发中很少采用,本文采用第6种方法,该方法生成的应用软件对MATLAB没有依赖 性,可以与之独立而运行。 2通过VC与MATLAB编译器实现互连的具体方法 2.1MATLAB编译环境设置 为了能够使用MATLAB的编译器将.m函数文件编译为动态链接库DLL,必须对MATLAB的环境 基金项目:国家“十一五”重大科技攻关项目(JPPT-115-189) 作者简介:李云龙(1980-),男,河南洛阳人,硕士生;唐六丁(1947-),男,江苏常州人,教授,主要研究领域为非线性振动. 收稿日期:2007-11-16 ©1994-2009ChinaAcademicJournalElectronicPublishingHouse.Allrightsreserved.http://www.cnki.net 第4期李云龙等:基于VC++与MATLAB混合程序设计与应用·51· 做出相应的配置。做法如下:在MATLAB环境中运行mbuild2setup命令和mex2setup命令,按屏幕提示 选择有关选项,并按实际路径情况选择编译器[6]。 2.2VC编译环境设置 (1)选择Tools菜单下的Options⋯项,选择Directories,在Showdirectorisfor列表框中,将MATLAB 安装路径和库文件路径添加到VC路径中,这些操作只需要一次,VC就会自动记录,应用到每一个工 程; (2)选择Project菜单下的Setting⋯项,选择C/C++,首先在Category栏中选择CodeGeneration,在 Userun2timelibrar