matlab生成dll方法的心得体会

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

将MATLAB函数编译成dll 供VC调用的方法

1简介

1.1 MATLAB简介

MATLAB名字是由MATrix和LABoratory两词的前三个字母组合而成。是美国新墨西哥大学计算机科学系主任的Cleve Moler教授出于减轻学生编程负担的动机,为学生设计了一组调用LINPACK和EISPACK库程序的“通俗易用”的接口,此即用FORTRAN编写的萌芽状态的MATLAB。

经几年的校际流传,在Little的推动下,由Little、Moler、Steve Bangert合作,于1984年成立了MathWorks公司,并把MATLAB正式推向市场。

目前,MATLAB己经成为应用最广泛的科学工程计算软件,它广泛的应用于自动控制、数学运算、信号分析、图象处理、财务分析等各行各业。用MATLAB 编写的数学运算及图像处理等程序十分简单,在MATLAB里有大量的MATLAB 库函数,包括初等数学函数、线形代数函数、矩阵操作函数、数值计算函数、特殊数学函数、插值函数等等,还可以利用MATLAB的编译工具将m文件方便的转化为C\C++语言、可执行程序(exe)、动态连接库文件(dll)、COM组件等等,并可直接供C\C++语言调用。

为什么要用VC与MATLAB接口?

既然MATLAB拥有强大的数值计算功能,利用VC与MATLAB接口可以充分发挥它的数值计算功能,并且可以不依赖MATLAB软件运行,在VC下做出漂亮的界面,把复杂的数据处理交给MATLAB去做。

1.2 MATLAB函数编译为dll与VC之间的通讯方式

1、使用自带的MATLAB Compiler

2、使用MATcom工具

3、在MATLAB下做com组件,在VC中调用com组件(出现了点问题,目前还没找到解决方法,这种方法在m文件较大、用matcom、调用math library 或使用mcc方式无法实现的时候,推荐使用)

2使用Matcom工具

2.1 MATcom简介

MATcom是MATHworks公司推出的第一个由MATLAB到C++的编译开发软件平台,其最新版本为4.5,集成调试编译环境为MIDEVA。

这个软件可厉害了,他生成的exe可执行文件可以在没有安装MATLAB的地方运行,只是需要几个dll文件而已。如果用MATLAB的Deployment Tool 来生成的exe可执行文件,在没有安装MATLAB的机子上运行时需要安装MCR,而MCR现在有200M 多,所以很不方便。

通过MATcom连接MATLAB m文件有以下三种方法:

(1)经过简单的设置,由MIDEVA将m源文件转换为C/C++,然后添加到VC工程中。

(2)由MIDEVA直接生成EXE文件,然后在VC中通过Shell调用。这种方法简单方便,但运行时出现一个控制台窗口,而且由于VC和MATLAB之间不能交互,通用性差,仅适用于VC调用MATLAB实现图形显示的场合。

(3)通过Visual MATcom工具条,使用Add-in,这种方法提供了MATLAB 和VC直接集成的途径,且可快速集成m文件到VC工程中创建独立的C/C++应用程序、C MEX DLL,在调试过程中可以查看矩阵变量的值,可直接修改m 源文件而不是修改生成的C/C++文件。

2.2 MATcom的安装

a) 安装之前,首先在matlab的安装目录下建立文件夹:\MATLAB7.0\bin\toolbox\matlab\general。matcom4.5在安装时需要你输入口令,Matcom4.5的口令为FREE-4.5-1191。

b) 之后启动MATLAB,运行以下命令:

cd c:\matcom45 % MATcom的安装路径

diary mpath

matlabpath

diary off

c)复制%MATcom45%\bin\usertype.dat文件到%VC%\Common\MSDev98\bin目录。

d) 运行Visual C++,并从菜单中选择Tools->Customize->Add-ins and Macro Files,选择Browse,改变文件类型为Add-in(.dll),选择%MATcom45%\bin\mvcide.dll文件,确定。

e) 在Visual C++的开发环境中可以看到一个Visual MATcom工具条,安装成功。

2.3 Matcom的工作原理

Matcom编译.m文件是先将.m文件按照与Matcom的Cpp库的对应关系,翻译为CPP源代码,然后用对应版本的C编译器将该CPP文件编译为exe或dll文件,所以,在第一次运行时让指定C Complier的路径是必需的,否则将无法编译。指定好的C Complier的信息写在Matcom/bin/matcom.ini文件中。但也有不足之处:比如,对struct等类的支持有缺陷,部分绘图语句无法实现或得不到准确图象,尤其是三维图象。

2.4使用Matcom将.m文件翻译为C++文件

a) 在MIDEVA下新建一个.m文件

function Test1()

x=-10:0.1:10;

y=sin(x);

plot(x,y);

在matcom安装路径Debug文件夹下将会产生以下文件:

从这里可以看出,MIDEVA己经将.m文件转化成c++代码,放在Test1.cpp 中。

b) 在VC中用MFC Wizard(exe)创建一个基于对话框名为Example的工程。

在面板上添加一个ID为IDC_BUTTON1按扭。

c) 将C:\matcom45\Debug目录下的Test1.cpp文件的内容拷贝到

void CExamleDlg::OnButton1()下;

d) 将C:\matcom45\lib\下的matlib.h和v4501v文件和C:\matcom45\debug 下的Test1.h文件拷贝到工程Example目录下,然后在VC中将库文件和头文件加入到工程中:工程->添加工程->Files,选择刚刚拷贝到Example目录下的matlib.h 、v4501v和Test1.h文件。

相关文档
最新文档