VC与Matlab混合编程(在VC中调用DLL)

本文介绍了如何在VC++中通过DLL实现与Matlab的混合编程,利用Matlab的强大功能并提高程序效率。首先讲解了Matlab的广泛应用,然后讨论了三种混合编程方法,重点阐述了通过DLL的方式,并详细描述了在Windows环境下,使用MATLAB Compiler将.m文件编译为DLL的过程,以及在VC++中调用DLL实现混合编程的步骤。
摘要由CSDN通过智能技术生成

Matlab 作为当今世界上应用最为广泛的数学软件, 具有非常强大的数值计算、数据分析处理、系统分析、图形显示甚至符号运算的功能。已经在如生物工程,图像处理,语音处理,雷达探空,声纳探水,地震探地,以及控制论,系统论等各个领域得到广泛的应用。它是一个完整的数学平台,在这个平台上,用户只需寥寥数语就可以完成十分复杂的功能,大大提高了工程分析计算、图像处理的效率。但是Matlab 强大的功能只能在它所提供的平台上才能使用,即用户必须在安装Matlab 系统的机器上才能执行*.m 文件。这样当用户需要将在Matlab 下已开发完毕的复杂算法应用到高级语言开发环境下时就带来了问题,是将现成的东西集成高级语言开发的程序中呢?还是用高级语言再重新实现一遍?显然大家所期望的是减少工作量, 最好能将Matlab下开发好的程序或函数直接应用到高级语言开发的程序中,这就是Matlab与高级语言的混合编程问题。

VC++是当前Windows 下的主要编程语言之一,它能方便地形成应用软件中所需要的各种用户界面和工具并直接与系统及底层硬件交换数据。用VC++开发的系统具有容易维护升级、界面友好、代码效率高、执行速度快等一系列优点,因此已成为目前应用软件开发中广泛采用的主要工具之一。因此,如何将MatlabVC++进行有效的混合编程广受工程科研人员的关注。解决这个问题,不仅能更好地发挥Matlab 强大的功能,还能快速地进行软件开发,尤其是当软件开发中需要实现复杂的数学算法、图形处理时尤为迫切。研究VC++Matlab的混合编程具有很大的实际意义。

MATLAB Visual C++结合的方法有多种,但其实用程度与范围不同。目前主要有以下三种方式。

1. 通过Matlab引擎(Engine)

采用客户机/服务器(Client/Service)的计算模式,通过windowsActiveX通道和MATLAB进行结合。MATLAB引擎采用客户机和服务器计算方式,提供了一组Matlab API函数,用户不必关心Matlab引擎是如何实现的,只要调用这些函数即可。正是通过这些API函数实现应用程序进程之间的传递函数,从而实现MatlabVC的混合编程。具体应用中,往往在VC中设计程序框架, VCC语言或C++语言的程序作为前端客户机,它向Matlab引擎传递命令和数据信息,通过调用MATLAB引擎在后台与MATLAB服务器建立连接,实现动态通信。这种处理方法不要求链接整个Matlab,只需嵌入必要的Matlab引擎库,节省了大量的系统资源,使应用程序整体性能更好,处理效率更高,但这种混合编程的方法需要MATLAB在后台适时运行不能脱离Matlab环境,否则影响了程序的通用性,因此这种方法在实际开发过程中很少采用。

2. 通过DLL实现混合编程

DLL是动态链接库的英文缩写,是一个可执行的二进制文件。把很多通用的功能放在DLL 中,可供多个应用程序调用,而不是每个应用程序在连接时都要增加一个库中目标代码的拷贝。通过Matlab自带的Compiler编译器,可以把由Matlab编写的m 函数文件编译成动态链接库(dl1)。或者通过Matlab提供的组件功能,运用VC+十向导自动生成m文件的动态链接库。在VC程序中调用封装的函数,实现数值算法的运用。这种方法只需在开发和发布中包含其生成的动态库就可以了,可以使程序脱离Matlab可以整体减少文件外部存储空间的占有量,并实现了代码共享。

3.使用COM技术实现混合编程

    COM技术是一种应用广泛、方便灵活的方法,是利用MATLAB提供的Deploy Tool工具实现MATLABC/C++的混合编程。COM给软件开发人员提供了一种共享二进制代码的方法,这种共享并不局限于某种编程语言。

 

 

 

 

 

 

VCMatlab混合编程(VC中调用DLL)的实现

本人所用系统为windows7旗舰版,MATLABR2008aMicrosoft Visual C++6.0编程环境。

一、       MATLAB编译环境的设置

为了能够使用MATLABComplier*.m函数文件编译为动态链接库DLL,必须对MATLAB的环境做出相应的设置。具体做法如下:

MATLABCommand Window下输入命令 mbuild –setup,并根据MATLAB的提示选择合适的编译器,笔者使用的是Microsoft Visual C++6.0,进行对C++连接环境的设置。过程如下:

 

>> mbuild -setup

Please choose your compiler for building standalone MATLAB applications: 

 

Would you like mbuild to locate installed compilers [y]/n? y

 

Select a compiler:

[1] Lcc-win32 C 2.4.1 in D:/PROGRA~1/MATLAB/R2008a/sys/lcc

[2] Microsoft Visual C++ 2005 in d:/Program Files/Microsoft Visual Studio 8

[3] Microsoft Visual C++ 6.0 in D:/Program Files/Microsoft Visual Studio

 

  • 1
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值