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完成。