VB与MATLAB通信实现方案二 前言:MATLAB与VB接口,有使用DLL, DDE ,OLE ,ActiveX ,COM 组件等多种方法. 本文介绍的方法: 使用MATLAB中的COM生成器(comtool),将M文件生成DLL,于VB中引用.从MATLAB6.5开始,MATLAB提供了COM生成器,使用该生成器,可以将MATLAB函数和自定义的函数打包成组件,然后集成到支持该技术的应用程序中去.使用该技术,可以很大程度上脱离MATLAB环境. 做个简单的例子吧! 1.建立M文件Test.Mfunction s=test() global a b %值得注意的地方 s=a+b; return(Matlab6.5)中测试:>> clear>> global a b>> a=1;b=2;>> testans = 3 2.使用Matlab 之comtool将其编译为testdll.dll包含类名为 testdll >>comtool MATLAB COM Builder-->File-->New... 注意写类名:class name 添加要编译的M文件: 点击Add File 编译DLL:点击Build Matlab 中测试DLL: >> h=actxserver('testdll.testdll') 3.建立VB工程,工程-->引用-->浏览,找到testdll.dll并添加程序代码:Option Explicit Dim mydll As New testdll.testdll Dim bval As Double Dim aval As Double Private Sub Form_Load() Set mydll = New TestDll.TestDllEnd Sub Private Sub Command1_Click() Dim varRes As Variant '要注意的地方 aval = 3 bval = 2 mydll.a = aval mydll.b = bval Call mydll.test(1, varRes) Text1.Text = Str(varRes) End Sub 补充说明: 1.M文件的形式值得注意; 2.编译时要求有VC或其他C/C++编译环境; 3.引用DLL要注意一些问题; 4.VB中取返回值: Dim varRes As Variant Call mydll.test(1, varRes) Text1.Text = Str(varRes) 5.本文例子较简单,意在说明问题,复杂的留给读者发挥吧! 该方法可以使程序很大程度上脱离MATLAB环境运行! 编译DLL还有其他方法,但用到的原理是一样的,不妨一试试! 有问题联系! Edited by Guassfans 2007-07-20

评论