matlab 与 Delphi 混合编程
matlab 6.5+vc6.0
利用Matlab的COM Builder工具可以将所需的Matlab功能自动转化为一个COM组件,供其它应用程序调用,这种方式可以脱离Matlab环境运行。
版本:MATLAB7.0.4, Delphi7.0, Microsoft Visual C/C++ 6.0
(注:MATLAB要安装在不含空格的英文目录下)
1. 设置编译器:
2. 设置系统路径:
我的电脑->属性->高级->环境变量->用户变量,分别选择include, lib, PATH变量,选择编辑,在变量值后添加(注意在前面加;):
include:
;D:\MATLAB704\extern\include
lib:
;D:\MATLAB704\extern\lib\win32\microsoft\msvc60
PATH:
3. 编写MATLAB的M函数(只能是函数不能是文件)。文件名和函数名一致。
4. 用MATLAB的COM Builder工具编译生成COM对象:
a. 创建工程:
选择FILE->New Project
Component name选项:设置com组件的名称,注意不要和上面添加的m文件重名。(MyP)
Class name选项:设置类名称。一般将鼠标点击空白位置,系统会自动生成类名。(MyPclass)
Project version选项:版本号。系统默认为1.0,。
Project directory选项:工程所在目录。
Complier options选项:编译器配置选项,全部选中。
b. 管理M文件和MEX文件:
c. 生成组件:
单击Build按钮,选中Com Object选项,这时com-builder会帮你自动编译连接该组件,生成所需要的头文件,源文件,接口描述文件,动态连接库文件,等等。
d. 打包和分发组件:
5. Delphi调用COM组件:
a. 加入COM组件:
Project->Import Type Library…,选择刚生成的MyP_1_0.dll文件,点击Install…按钮,安装组件,选择IntoNewPackage,设置 Package名称和目录。选择Compile编译生成组件。
在组件面板中找到ActiveX选项卡,把组件MyPClass放到界面上。默认命名为MyPclass1。
b. 使用COM组件:
在界面上放置一个按钮,编辑该按钮的事件,修改其代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
x , y : OleVariant;
i : integer;
begin
x := VarArrayCreate([1,10], varDouble);
y := VarArrayCreate([1,10], varDouble);
for i := 1 to 10 do
begin
x[i] := i;
y[i] := i*(i-5);
end;
MyPclass1.MyPlot(x,y);
6. 软件打包:
a. 在Application Data->Files and Folders中设置软件包含的文件。
b. 在Behavior and Logic->Custom Actions中添加OnFirstUIAfter函数,并在末尾加入以下两行:
Delay(2);
if (LaunchAppAndWait(INSTALLDIR+") then
MessageBox("Error in launching MyP.exe!",WARNING);
endif;
c. 编译:Build
d. 发布:Distribute,即生成安装软件,运行setup.exe即可安装软件,且自动注册Matlab组件。
Matlab7.5+vs2005
Matlab7.5之后,支持生成.NET类型的组件,供C#等语言调用。
同时仍然支持COM类型的组件,供VB、Dephi、PB等语言调用。
一、准备工作
安装Matlab;
安装Visual Studio 2005或者更高版本;
安装 MCRInstall.exe,我安装完Matlab之后在这里找得的:C:"Program Files"MATLAB"R2008b"toolbox"compiler"deploy"win32
点 击:我的电脑-属性-高级-环境变量-系统变量-PATH-编辑,在变量值输入框中,不要删除以前的字符串,在最前面加入MCR的安装路径, 如:C:"Program Files"MATLAB"MATLAB Compiler Runtime"v79"bin"win32;
然后确定、保存、重启电脑。
(这两步完全不理解是什么原因,直到安装了Matlab 2008b,仔细阅读它生成的readme.txt才知道)
二、写个用于测试的m文件
三、启动Matlab,新建Deployment项目
自己选择项目保存目录和项目名,如D:"和MatMagic.prj
类 型选择.NET Component,如果你要生成更通用的COM组件,选择Generic COM Component。添加刚才的m文件到这个新建的项目中去。点击Build the project按钮等大约1分钟,才能Build完成。