脱离MATLAB工作环境,实现MATLAB与VisualBasic语言的混合编程 以下讨论是在MATLAB7.0软件和vc++6.0软件环境中进行:一、将MATLAB的.m文件编译成.exe文件,实现MATLAB与Visual Basic语言的混合编程1、将 \MATLAB7\toolbox\compiler\deploy\matlabrc.m 中的81行 set_param(0,'PaperType',defaultpaper)和82行set_param(0,'PaperUnits',defaultunits)注释掉,或者干脆删掉,否则,在没有安装MATLAB的机子上运行MATLAB与VisualBasic语言混合编成的程序时,会出现:“Undefinedcommand/function 'set_param'”的错误。2、在Matlab7 的命令窗口运行下列命令:rehash toolboxcache完成工具箱加载和更新。3、在Matlab7 的命令窗口运行下列命令:Mcc –m ***.m将MATLAB的.m文件(M文件必须以Function开始,即必须是函数文件)编译成.exe文件,将编译生成的.ctf文件和.exe文件拷贝到VB工程的目录中,他们是脱离matlab环境运行必需的文件;4、在VB工程中用下列语句对MATLAB的.m文件编译成的.exe文件进行调用:lTask = Shell("rt2.exe",vbHide) hProc= OpenProcess(PROCESS_QUERY_INFORMATION, False, lTask) IflTask = 0 Then MsgBox "程序执行失败" Do GetExitCodeProcess hProc, lExit DoEventsLoopWhile lExit = STILL_ACTIVE5、将VB工程进行打包,打包时,要将在MATLAB中编译生成的.ctf文件和.exe文件添加到VB工程包中,他们是脱离matlab环境运行必需的文件;6、将打包好的VB工程安装包拷贝到客户计算机中,并将matlab7\toolbox\compiler\deploy\win32下的MCRInstaller.exe程序也一起拷贝到客户计算机中。7、在客户计算机中,运行程序:MCRInstaller.exe,将matlab compiler runtime安装到客户计算机中。注意:安装目录必须位于它所在的文件夹;8、运行VB工程安装包中的setup程序,进行VB工程的程序安装;至此,在客户机中,即可正常运行MATLAB与Visual Basic语言混合编成的程序。注意事项:1、在VB工程所在目录中,不能有其它的.dll文件存在,否则在客户机中运行MATLAB与Visual Basic语言混合编成的程序时,会出现下列错误提示:“Warning:Failed to startthe Java Virtual machine.”“Warning:Disabling Javasupport.”“Undefined function orvariable ‘matlabrc’.”二、将MATLAB的.m文件编译成.dll文件,实现MATLAB与Visual Basic语言的混合编程1、将 \MATLAB7\toolbox\compiler\deploy\matlabrc.m 中的81行 set_param(0,'PaperType',defaultpaper)和82行set_param(0,'PaperUnits',defaultunits)注释掉,或者干脆删掉,否则,在客户机中运行MATLAB与Visual Basic语言混合编成的程序时,会出现:“Undefined command/function 'set_param'”的错误。2、在Matlab7 的命令窗口运行下列命令:rehash toolboxcache完成工具箱加载和更新。3、安装vc++6.0软件,为Matlab编译器的安装和配置做准备;4、在Matlab7 的命令窗口运行下列命令:mbuild –setup对Matlab的编译器进行安装和配置;5、在Matlab中创建COM组件 用Matlab COM生成器创建COM组件,包括4个步骤,即创建工程、管理m文件、生成组件、打包和分发组件。 在Matlab中创建COM组件步骤如下: (1) 创建工程。在Matlab命令窗中键入comtool命令,调用Matlab编译器,打开Matlab COM Build主窗口。在该窗口中,选择File→New Project,创建一个新的工程,在此对话框中对新工程进行设置,输入组件名和类名,选择合适的编译器。 (2) 管理m文件。单击“AddFile”按钮,添加编写好的M函数文件(M文件必须以Function开始,即必须是函数文件)。 (3) 生成组件。使用Build--àCom object菜单,创建COM组件,将MATLAB的.m文件编译成.dll文件。 (4)打包和分发组件:编译成功并通过测试后,就可以把有关文件打包和分发给目标器。单击 “Component”→”Package Component”,创建自解压可执行程序。注意:在使用Component--àPackageComponent菜单,生成.exe文件时,要将“includeMCR”前的选择框选中,使生成的.exe文件中能包含MCRInstaller.exe程序。6、将编译生成的.ctf文件和.dll文件以及.exe文件拷贝到VB工程的目录中;7、创建VB工程并调用COM组件新建“标准EXE”工程,进入VB编程环境,在“工程”菜单中单击“引用”选项, 在列表中选中第5步中生成的这些组件,以及添加MWComUtil 7.0 Type Library,单击“确定”按钮。 在VB工程引用这些组件后,需按照以下步骤来调用Matlab文件:Dim rt2 As rt2_1.rt2_1class '声明一个COM组件Set rt2 = New rt2_1.rt2_1classCall rt2.rt2 '执行rt2_1_1_0.dll文件8、将VB工程进行打包,打包时,要将在MATLAB中编译生成的.ctf文件和.dll文件以及.exe添加到VB工程包中;9、在客户计算机中,运行第5步中生成的.exe程序,对第5步中生成的.dll动态链接库进行注册,并自动运行MCRInstaller.exe程序,将matlab compiler runtime安装到客户计算机中。10、将打包好的VB工程安装包拷贝到客户计算机中,运行VB工程安装包中的setup程序,进行VB工程的程序安装;至此,在客户机中,即可正常运行MATLAB与Visual Basic语言混合编成的程序。注意事项:1、VB编译生成的MATLAB与Visual Basic语言混合编成的exe应用程序不能简单的移植,必须要打包,在打包时应带上dll文件,然后将打包好的VB工程安装包拷贝到客户机中,运行VB工程安装包中的setup.exe安装程序,进行VB工程的安装,VB工程安装完成后,再在客户机中,运行第5步中生成的.exe程序,就可以避免出现下列各种错误提示:(1)“Warning:Failedto start the Java Virtualmachine.”“Warning:Disabling Javasupport.”“Undefined function orvariable ‘matlabrc’.”(2)“Automation错误”或者“自动化错误”(3)“运行时错误’429’:ActiveX部件不能创建对象”(4)“MCR instance isnot available.”2、在VB工程所在目录中,除了包含第5步中生成的.dll动态链接库文件外,不能有其它的.dll文件存在,否则在客户机中运行MATLAB与Visual Basic语言混合编成的程序时,会出现下列错误提示:“Warning:Failed to startthe Java Virtual machine.”“Warning:Disabling Javasupport.”“Undefined function orvariable ‘matlabrc’.”3、如果直接将Vb工程程序拷贝到客户机中,而不是通过安装Vb工程程序,来运行MATLAB与VisualBasic语言混合编成的程序时,会出现:“Automation错误”或者“自动化错误”的错误提示,这时可以通过下列方法之一解决:(1)在客户机中运行第5步中生成的.exe程序,对第5步中生成的.dll动态链接库进行注册,就可以解决“Automation错误”或者“自动化错误”引起的程序运行异常。(2)在客户机中直接运行regsvr32.exe程序,对第5步中生成的.dll动态链接库进行注册,也可以解决“Automation错误”或者“自动化错误”引起的程序运行异常。4、如果在客户机中,没有运行第5步中生成的.exe程序,对第5步中生成的.dll动态链接库进行注册,那么在客户机中运行MATLAB与Visual Basic语言混合编成的程序时,就会出现:“运行时错误’429’:ActiveX部件不能创建对象”的提示,或者出现:“Automation错误”或者“自动化错误”的错误提示。5、如果在客户机中运行MATLAB与Visual Basic语言混合编成的程序时,出现:“MCR instance isnot available.”的错误提示时,可以通过将打包好的VB工程安装包拷贝到客户计算机中,运行VB工程安装包中的setup程序,进行VB工程的程序安装,就可以解决这种错误。