2024年3月26日发(作者:)
Matlab函数转换为VB可用的DLL
Matlab函数转换为VB可用的DLL
段晓君
摘 要:一种利用Matcom将Matlab函数转换为VB中可用的动态链接库的方法,操作简
单易行。
关键词:Matlab函数 动态链接库DLL M-文件 VB语言
1 Matlab简介
Matlab是MathWorks公司开发的一种工程计算语言。它是一个交互系统,在Matlab
中的基本数据元素是一个不要求维数的复矩阵。用Matlab可解决很多工程计算问题,特别
是涉及到矩阵和矢量形式的问题。Matlab是一个高度集成的语言环境,在它的界面下可以
编写程序、运行程序并可进行跟踪调试。对于广大的工程技术人员和科学研究人员来说,
Matlab不失为一种很好的工具。
Matlab也有局限性,一般它不能脱离Matlab集成环境工作;而且编写界面的功能比
较弱。
Matcom是一个从Matlab到C++的编译器,它可以节省用户的运算时间和内存要求。
MathTools公司利用Matcom技术编写了Mideva工具软件,它可以借用C++编译器将
Matlab下的M-文件转换为可被Visual Basic、Excel以及Delphi调用的DLL 动态链接
库 或者是独立的可执行文件。本文就M-文件到DLL的转换以及在VB中调用这一类DLL
的2个问题做了一些探讨。文中针对Matlab5.0、VC5.0、VB5.0、Matcom4.0或相
应的更高版本的软件进行了讨论。
2 M-文件到DLL的转换
要将一个m-文件编译成DLL,需进行如下操作:启动运行Matcom4的Mideva,点
击菜单File/Compile to dll,选择要转换的m-文件(该文件应该是能够作为函数被其它
集成环境调用的m-文件,假设文件名为yourfile.m)。值得注意的是,Mideva对M-
文件有一定的要求,即该文件必须是1个函数,如果要编译没有输入也没有输出的脚本文件,
可以先在Matlab中将它编辑成无输入无输出的函数,再按照上述操作进行转换。
编译之前,还可以在Mideva集成环境的菜单Configuration中配置编译的参数为
Debug模式或Release模式。编译完成之后,在对应的Debug或Release目录下,可以
看到一些编译生成的文件。在VB集成环境中需要用到的文件有2个:yourfile.dll(DLL
文件)和yourfile.bas(在VB中声明DLL的模块文件)。为了在VB中能够调用这类DLL,
要求将yourfile.bas和matlib42.bas加入到你的工程中,并将yourfile.dll以及
matlib42.dll拷贝到工程所在的目录下。编译后,在VB中的函数名为yourfile_in_out,
其中,in和out分别为函数的输入参数和输出参数的个数,例如c=conv(a,b),编译转
换后的函数名为conv_2_1。
3 数据接口
VB中要使用DLL,必须在你的工程中包含DLL的声明文件(即模块文件),同时还要
将DLL拷贝到工程文件所在的目录中。事实上,yourfile.dll中的函数并不能直接与集成
环境进行数据交换,它只能通过矩阵句柄进行接口。这些句柄与文件句柄类似,它是用一个
32位的矩阵整数来表示的,它们可以被创建,也可以被删除,通过它可以对矩阵数据进行
操作。这样,集成环境与DLL之间需要1个中间层,MathTools提供了一个单独的C++库
文件Matlib42.dll以及相应的模块文件Matlib42.bas。Matlib42.dll相当于VB集成
环境与DLL之间的代理,在这一DLL中包含有20多个矩阵句柄操作函数和800多个从
Matlab转换而来的矩阵函数。表1列出了Matlib42.dll提供的比较常用的14个矩阵句柄
函数。


发布评论