6. 小结
本文详细的介绍了Matlab引擎使用方法并演示了一个简单的利用VC调用Matlab画图的程序实例。大多数时候,程序员可以利用Matlab强大的数据读写、显示能力和VC编程的高效率。例如,在Matlab中要读入一幅任意格式的图像均只需一条命令i=imread('test.jp');图像数据矩阵便存放在了二维数组i中,可以通过VC读入该数组进行相关处理再调用Matlab显示,这种混合编程方式能大大提高工作效率。
当然,利用VC编译的Matlab引擎程序,运行环境中还必须Matlab的支持,如果要编译完全脱离Matlab的程序,可采用其它方式,如利用第三方Matcom程序编译独立的可执行程序等
//参考博文截止
3,C++代码中调用Matlab编译器输出的库函数。这种方式就是在Matlab中将M文件代码编译成可以在C编译器下使用的库函数(有多种库函数形势),然后在C代码中调用。这种方法试过了,调用编译通过了,但有些问题还没有明白解决。主要是参考下面的文章:后面说的注释好像是头文件(博文中看不清楚,我试了一下注释头文件,发现不报错了)
刚开始学习用VC++调用matlab生成的DLL,找了网上一些资料,难以找到vs2008与MATLAB2009b版本的,按照以往版本做的总是有很多错误。经过两天努力,终于调试成功,这里将经验总结一下,以供有需要的人们参考。
实验环境:
Win7
MATLAB 2009b(安装路径:E:\Program Files\MATLAB\R2009a)
VS2008 中文版(安装路径:E:\Program Files\Microsoft Vis l St io 9.0)
1.Matlab 生成DLL
1.1编译器的安装
在matlab中先安装编译器,我在第一次安装的时候一路y下来,只有一个compiler,还是最老的。这教育我们要学会说N,按照以下步骤操作
>> mbuild -setup
Please choose your compiler for building standalone MATLAB applications:
Would you like mbuild to locate installed compilers [y]/n? n
Select a compiler:
[1] Lcc-win32 C 2.4.1
[2] Microsoft Vis l C++ 6.0
[3] Microsoft Vis l C++ .NET 2003
[4] Microsoft Vis l C++ 2005 SP1
[5] Microsoft Vis l C++ 2008 Express
[6] Microsoft Vis l C++ 2008 SP1
[0] None
Compiler: 6
The default location for Microsoft Vis l C++ 2008 SP1 compilers is C:\Program Files\Microsoft Vis l St io 9.0,
but that directory does not exist on this machine.
Use C:\Program Files\Microsoft Vis l St io 9.0 anyway [y]/n? n
Please enter the location of your compiler: [C:\Program Files\Microsoft Vis l St io 9.0] e:\Program Files\Microsoft Vis l St io 9.0
(红色部分换成你的vs所安装的地址)
Please verify your choices:
Compiler: Microsoft Vis l C++ 2008 SP1
Location: e:\Program Files\Microsoft Vis l St io 9.0
Are these correct [y]/n? y
****************************************************************************
Warning: Applications/components generated using Microsoft Vis l St io
2008 require that the Microsoft Vis l St io 2008 run-time
libraries be available on the computer used for deployment.
To redistribute your applications/components, be sure that the
deployment machine has these run-time libraries.
****************************************************************************
Trying to update options file: C:\Users\Administrator\AppData\Roaming\MathWorks\MATLAB\R2009a\compopts.bat
From template: E:\PROGRA~1\MATLAB\R2009a\bin\win32\mbuildopts\msvc90compp.bat
Done . . .
1.2 DLL的生成
首先新建一个m文件,文件名为myadd2.m,定义了一个名为myadd2的函数,代码如下:
//////////////////////////////////////////////////////
function [y,z] = myadd2(a, b)
% dummy function, just to demonstrate the idea
y = a+b;
z = a+2*b;
end
/////////////////////////////////////
在MATLAB命令框中输入以下命令:
mcc -W cpplib:libmyadd2 -T link:lib myadd2.m