1. VC++调用 MATLAB 端程序的方法
VC++与 MATLAB 混合编程的方法有很多,如下:
<1> 通过 MatlabEngine 方式
MatlabEngine 是 指 一 组 Matlab 提 供 的 接 口 函 数 , 支 持 C 语 言 ,
MatlabEngine 采用 C/S(客户机/服务器)模式,Matlab 作为后台服务器,而 C
程 序 作 为 前 台 客 户 机 , 通 过 Windows 的 Ac!veX 与 服 务 器 通 信 , 向
MatlabEngine 传递命令和数据信息,从 MatlabEngine 接受数据信息。用户可
以在前台应用程序中调用这些接口函数,实现对 MatlabEngine 的控制。采用
这种方法几乎能利用 Matlab 全部功能,但是需要在机器上安装 Matlab 软件,
而且执行效率低,因此在实际应用中不采用这种方法,在软件开发中也不可
行,这种模式只适合个人使用或做演示。
<2> 直接调用 Matlab 的 C/C++数学函数库
Matlab 中提供了可以供 C/C++语言调用的 C/C++数学函数库,其中包含
了大量用 C/C++语言重新编写的 Matlab 数学函数,这些函数涉及到线形代数、
数值分析、傅立叶变换、多项式计算、解微分方程等,并且函数库中提供了
大量各种矩阵操作函数,在 VC 中可以直接使用这些函数,通过这些函数可
以在 VC 中方便的实现在 Matlab 中矩阵运算功能。用这种方法可以很灵活的
调用 Matlab 来编写应用程序,但要求读者对 C/C++语言非常熟悉,并且这种
模式不能包括所有的 Matlab 函数,尤其是无法充分使用 Matlab 提供的详尽
的绘图函数。
<3> 用 Matlab 自带的编译器
MatlabCompiler 的作用是将 m 文件转化成 C/C++代码(也就是通常所用
的 mcc 命令),这种源代码需要用 C/C++编译器编译连接成独立应用程序,
在将 m 文件转成独立应用程序的过程中生成的 C/C++文件,原则上是可以被
其它的 C/C++代码调用的,编译器可以通过设置 mcc 命令的选项,将 m 文件
编 译 成 动 态 链 接 库 文 件 、 C/C++ 文 件 、 可 执 行 文 件 等 一 系 列 文 件 。 到
matlabR21.1 为止,MatlabCompiler 的 m 程序转换成 C/C++代码功能有很多限
制:⑴不能转换脚本 m 文件,只能转换 m 函数;⑵不能使用 matlab 对象;
⑶不能用 input 或者 eval 操作 matlab 空间变量;⑷不能动态地命名变量,然
后用 load 或者 save 命令来操作;⑸不能处理具有嵌套调用其他 m 文件的 m
文件;⑹不能使用 MATLAB 内联函数。
<4> 使用 matcom 工具
Matcom 是 MathTools 公司开发的一个基于 C++ 矩阵函数库 Matrix 的一
个 matlab 的 M 文件与 cpp 文件的转换程序。它经过简单设置后能够将
matlab 的 M 文件转化为 C 语言的代码,并通过 VC 将其编译成可执行程序
(.exe)或动态链接库(.dll),然后在 VC 中通过 Shell 调用。Matcom 独立
于 Matlab 之 外 , 但 需 要 外 部 的 C++ compiler , 在 安 装 时 需 要 指 定 C+
+compiler 的位置,否则无法工作。相比其它方法使用 matcom 具有如下优点:
⑴转换过程简单(由 matcom 工具自动实现),轻易实现;⑵可以方便的生成
动态链接库文件(dll)和可执行文件(exe);⑶不仅可以转换独立的脚本文件,