> </P>1 {4 v! f. Z$ G$ E5 o
> Borland C++Builder是一种新颖的可视化编程语言。在工程应用中,我们一般 </P>
>用C++Builder语言编写应用程序,实现交互界面、数据采集和端口操作等,但 </P>' E$ n8 J9 h; X$ {4 K
>C++Builder在数值处理分析和算法工具等方面,其效率远远低于Matlab语言。在 </P>% g' F* g% {5 J8 {
>准确方便地绘制数据图形方面,Matlab语言更具有无可比拟的优势。此外, </P>
>Matlab还提供功能强大的工具箱。但Matlab的缺点是不能实现端口操作和实时控 </P>
>制。因此,若能将两者结合运用,实现优势互补,将获得极大的效益。 </P>
>本文结合实际介绍了应用Borland C++Builder3.0开发的Windos应用程序中,对 </P>
>Matlab的调用方法。 </P>
>一、C++Builder调用Matlab的实现方案 </P>
>1. 实现思路 </P>, A, v0 D" T/ J% F+ H2 Z' V; _% L
>在高版本的Matlab中(如Matlab V4.2)提供了DDE接口,用户可以通过Windows的 </P>5 @ h- `( [0 B" [0 f4 B
>DDE通信基制实现外部调用。这种实现方式比较简单,但将增大主程序代码,影响 </P>% r9 v! N2 j, Y
>运行速度。 </P>
>在Windows系统中,DLL是一种很特别的可执行文件,可以被多个Windows应用程序 </P>! U8 Y/ `4 Z( [2 h) W7 s+ E
>同时访问,具有固定的共享数据段。该数据段的数据在DLL被Windows下载前会一 </P>7 A8 E4 n7 D; k
>直保留在内存中,因此可以通过DLL实现用户程序与Matlab之间的数据传输和函数 </P>1 i9 I7 J! N1 G" e# c
>调用。 </P>
>具体地说,就是利用Matlab的32位动态连接库(DLL),生成相应的可以被 </P># S4 z+ u1 f' s9 Y# L: l1 D
>C++Builder调用的DLL,用来提供二者之间的基本支撑环境。只需在用户程序中加 </P>
>载该DLL,即可实现其数据段的共享。然后在用户程序中操作DLL数据段的数据,并 </P>
>通过某种方式在用户程序中使Matlab执行该DLL,就可实现用户程序对Matlab的调 </P>
>用。其形式可以是混合编程或函数调用,非常方便而高效。 </P>
>2. 实现方式 </P>
>Matlab提供了可外部连接的DLL文件,通过将其转换为相应的Lib文件,并加以必要 </P>% O- d; j* p( N8 ~9 Q
>的设置,就可以在C++Builder中直接进行Matlab函数调用,实现C++ Builder语言 </P>) l1 V& S8 d+ B! l3 K
>与Matlab语言的混合编程。 </P>6 b8 U8 I" ?% Q) W! a4 z
>(1) 运行环境要求 </P>% ?; r! M1 h7 B. H& Y; G
>由于Matlab提供的是32位的DLL。其运行环境要求是Matlab V4.2或更高版本。 </P>0 N% d% u, \! f4 _
>C++Builder可以进行32位编程,这里我们采用的是V3.0版本。 </P>, H4 N! C1 ^: J$ x1 N; L& K
emoClick(TObject *Sender) </P>! i( p I( E" V/ m: n1 q| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |