VC与Matlab的混合编程VC与MATLAB混合编程大致可以分为两类:一类需要MATLAB后台支持的混合编程,一类是不需要MATLAB支持而生成独立运行程序的混合编程。1. 需要MATLAB后台支持的混合编程又分为两类:1.1将原有的C程序写成子函数的形式 在子函数中加入固定格式的void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray * prhs[])函数,然后调用MATLAB的mex指令,在mex后输入要编译的c程序名,即可生成在MATLAB环境下直接运行的DLL文件。MATLAB的PDF文档中有详细介绍。1.2通过外部调用的方式实现 首先将M文件的文件名加入到一段c程序中,通过MATLAB中的mex批处理文件将该c文件生成exe文件,然后通过VC的外部调用的函数shellexec()或winexec()实现调用。Mex 批处理的调用格式如下:Mex –f msvc60engmatopts.bat *.c上面的方法可能在编译时出错,具体与MATLAB与VC的环境设置有关,可以自己查一查。^_^2. 利用MIDEVA生成不需要MATLAB后台支持的程序上面实现了MATLAB与VC的混合编程,但仍需要MATLAB运行环境的支持。当然我们更希望实现能够脱离MATLAB运行环境、能够独立运行的程序,下面讲讲。MIDEVA是MATHTOOLS公式推出的MATLAB替代产品,是该公司原MATCOM的扩张。在很多方面MIDEVA比MATLAB强大,它最主要的特点是能够将M文件转化为c语言的代码,并可通过VC或BC编译成可执行代码或dll。当然,之所以推出这个工具也是考虑到M程序执行速度慢的原因,毕竟m程序是解释执行的(为什么?自己查一查吧!^_^)下面是MIDEVA的几种用法:2.1利用MATCOM生成独立执行的exe文件MATLAB环境中有M文件生成的可执行程序不能脱离MATLAB 环境的,而利用matcom可生成脱离MATLAB环境而独立运行的程序,其生成方法相当的简单,如果你用的是低版本的MATCOM,也就是命令行形式的那种,文件不大,可能就几兆,(如果谁需要我可以给大家或是自己到INTERNET 上down),那么使用方法你自己可以看看他的帮助(本人没用过)。如果用的是Visual 版的,那么就简单多了:菜单File/compile to exe/即可,编译完成后可在debug目录中找到一个与M 文件同名的exe文件。2.2利用MATCOM 生成dll这一功能只针对VC而开发,DLL的生成方法与exe文件的生成方法相同,可以生成针对VB,EXCEL/DELPHI等的动态库文件,使用非常方便。生成dll的过程同样要生成cpp文件,mathtool公司建议用户:如果使用VC开发,最好直接使用MATCOM编译生成cpp文件,而不是直接使用dll文件(原因自己查查吧)。2.3实现VC环境中直接对m文件进行编译。进入VC,单击tools菜单-》customize->Add-ins and macro files->browse,选择文件类型为dll,在MATCOM的bin目录中找到MVCIDE.DLL,OK.这样在VC工具兰出现了心的工具,可以直接在VC中编译m文件了。2.4利用matrixlib在MFC中编程。与上面的介绍的方法差不多,不过加入的不是MVCIDE.DLL文件,而是v4500v.lib.直接在VC中编程实现自己需要的功能就可以了,不过需要注意的是:程序必须遵循MATCOM 的语法。说了这么多,不知大家明白没有。(希望大家都明白了,免得我打半天的字白废了力气)

评论