> </P>; }/ Q8 u% g# n7 M
> Borland C++Builder是一种新颖的可视化编程语言。在工程应用中,我们一般 </P>
>用C++Builder语言编写应用程序,实现交互界面、数据采集和端口操作等,但 </P>; m' \% a9 ~# t4 M+ I6 ]
>C++Builder在数值处理分析和算法工具等方面,其效率远远低于Matlab语言。在 </P>% K$ X5 {! }* E m7 o; V
>准确方便地绘制数据图形方面,Matlab语言更具有无可比拟的优势。此外, </P>9 ^6 I3 g4 k' f7 U! F( V4 O1 k
>Matlab还提供功能强大的工具箱。但Matlab的缺点是不能实现端口操作和实时控 </P>. b ?( B2 @$ }9 D# n Q. z
>制。因此,若能将两者结合运用,实现优势互补,将获得极大的效益。 </P>
>本文结合实际介绍了应用Borland C++Builder3.0开发的Windos应用程序中,对 </P>
>Matlab的调用方法。 </P>
>一、C++Builder调用Matlab的实现方案 </P>. A3 n2 \. Y! T# {3 b, z; i# M$ y, d
>1. 实现思路 </P>, G) k/ G3 }. K: O
>在高版本的Matlab中(如Matlab V4.2)提供了DDE接口,用户可以通过Windows的 </P>
>DDE通信基制实现外部调用。这种实现方式比较简单,但将增大主程序代码,影响 </P>
>运行速度。 </P>
>在Windows系统中,DLL是一种很特别的可执行文件,可以被多个Windows应用程序 </P>
>同时访问,具有固定的共享数据段。该数据段的数据在DLL被Windows下载前会一 </P>* {+ T& t3 N; T" w
>直保留在内存中,因此可以通过DLL实现用户程序与Matlab之间的数据传输和函数 </P>
>调用。 </P>( L" _, S7 H5 e* J/ j- o
>具体地说,就是利用Matlab的32位动态连接库(DLL),生成相应的可以被 </P>
>C++Builder调用的DLL,用来提供二者之间的基本支撑环境。只需在用户程序中加 </P> n3 j6 L/ u9 g4 [
>载该DLL,即可实现其数据段的共享。然后在用户程序中操作DLL数据段的数据,并 </P>1 b* X" X% p9 g5 b7 X
>通过某种方式在用户程序中使Matlab执行该DLL,就可实现用户程序对Matlab的调 </P>9 g. e- n* J. g% o% L! \. L6 ?# [* E
>用。其形式可以是混合编程或函数调用,非常方便而高效。 </P> k# F' e4 C% x( Q( _$ Q7 Z
>2. 实现方式 </P>8 u# v- M# t! s% J. v' d- k- C1 K
>Matlab提供了可外部连接的DLL文件,通过将其转换为相应的Lib文件,并加以必要 </P>
>的设置,就可以在C++Builder中直接进行Matlab函数调用,实现C++ Builder语言 </P>
>与Matlab语言的混合编程。 </P>
>(1) 运行环境要求 </P>
>由于Matlab提供的是32位的DLL。其运行环境要求是Matlab V4.2或更高版本。 </P>
>C++Builder可以进行32位编程,这里我们采用的是V3.0版本。 </P>' Q) F( |( {0 x
emoClick(TObject *Sender) </P>% u$ u0 d2 G% \+ I$ a. f| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |