> </P>' F* m1 G/ W7 c# e
> Borland C++Builder是一种新颖的可视化编程语言。在工程应用中,我们一般 </P>6 ]3 l- d; N9 e6 _ g
>用C++Builder语言编写应用程序,实现交互界面、数据采集和端口操作等,但 </P>
>C++Builder在数值处理分析和算法工具等方面,其效率远远低于Matlab语言。在 </P>$ ]6 h R9 ? z7 B/ z6 U6 x. T: }! u" `* H
>准确方便地绘制数据图形方面,Matlab语言更具有无可比拟的优势。此外, </P>! @* _) E% M4 y2 @, a
>Matlab还提供功能强大的工具箱。但Matlab的缺点是不能实现端口操作和实时控 </P>
>制。因此,若能将两者结合运用,实现优势互补,将获得极大的效益。 </P>$ s0 @" B4 d/ W. [2 P( _
>本文结合实际介绍了应用Borland C++Builder3.0开发的Windos应用程序中,对 </P>
>Matlab的调用方法。 </P>
>一、C++Builder调用Matlab的实现方案 </P>
>1. 实现思路 </P>
>在高版本的Matlab中(如Matlab V4.2)提供了DDE接口,用户可以通过Windows的 </P>
>DDE通信基制实现外部调用。这种实现方式比较简单,但将增大主程序代码,影响 </P>
>运行速度。 </P> `3 T' M2 j; k. x
>在Windows系统中,DLL是一种很特别的可执行文件,可以被多个Windows应用程序 </P>
>同时访问,具有固定的共享数据段。该数据段的数据在DLL被Windows下载前会一 </P>2 V* c/ F' i9 }/ a
>直保留在内存中,因此可以通过DLL实现用户程序与Matlab之间的数据传输和函数 </P>. D. z3 V& G* h2 b
>调用。 </P>0 x" m& w# c0 z6 U/ r! {! ]
>具体地说,就是利用Matlab的32位动态连接库(DLL),生成相应的可以被 </P>
>C++Builder调用的DLL,用来提供二者之间的基本支撑环境。只需在用户程序中加 </P>' F% i" w( N+ j8 M$ q! F
>载该DLL,即可实现其数据段的共享。然后在用户程序中操作DLL数据段的数据,并 </P>
>通过某种方式在用户程序中使Matlab执行该DLL,就可实现用户程序对Matlab的调 </P>
>用。其形式可以是混合编程或函数调用,非常方便而高效。 </P>
>2. 实现方式 </P>
>Matlab提供了可外部连接的DLL文件,通过将其转换为相应的Lib文件,并加以必要 </P>( h# @- j# V6 ^( j2 ?4 c, D; B3 t8 ?
>的设置,就可以在C++Builder中直接进行Matlab函数调用,实现C++ Builder语言 </P>
>与Matlab语言的混合编程。 </P>6 w9 u: ]2 { B4 @4 a a
>(1) 运行环境要求 </P>. C0 p: H) e7 M" m6 A! I9 k
>由于Matlab提供的是32位的DLL。其运行环境要求是Matlab V4.2或更高版本。 </P>+ h" C6 F6 b! s+ x: f+ ]1 \$ p
>C++Builder可以进行32位编程,这里我们采用的是V3.0版本。 </P>
emoClick(TObject *Sender) </P>2 G; D8 O4 A- z" V( g2 Z| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |