用MATLAB引擎方式实现VC与MATLAB混合编程的步骤如下:
1. 对于所有的使用MATLAB引擎方式实现VC与MATLAB混合编程的项目都得对VS2008当且仅进行一次如下设置:
a. 打开VS2008—>“工具”-->“选项”-->“项目和解决方案”-->“VC++目录”à右边的“显示以下内容的目录”中 选“包含文件”,在下面新建“D:/Program Files/MATLAB71/extern/include”。
b. 选“库文件”,在下面新建“D:/Program Files/MATLAB71/extern/lib/win32/microsoft”。
注:D:/Program Files/MATLAB71/为MATLAB的安装目录。
2. 新建Win32控制台程序。
3. 配置项目属性(每一个项目都要配置),引入相应的MATLAB引擎链接库。右击“项目名”选“属性”-->“配置属 性”-->“连接器”-->“输入”的附加项中添加:“libmx.h libmat.h libeng.h”,各个文件之间以空格隔开。
注意:vs2010是以分号或者换行符间隔!!
4. 新建源文件。此例子的源文件名为:“EngineMain.cpp”,在里面添加代码。
a. 首先要添加#include <engine.h>头文件。
b. 然后定义引擎指针ep,mxArray变量指针。
c. 打开MATLAB引擎:ep=engOpen(NULL);
d. 创建矩阵变量A,B,并将矩阵变量A写入到MATLAB引擎空间:engPutVariable().
e. 执行引擎命令:engEvalString().
f. 从引擎空间中读取执行结果:engGetVariable().
g. 释放矩阵空间:mxDestroyArray(A);
h. 关闭MATLAB引擎:engClose(ep);
5. 运行程序便可。
*******在做完以上工作后,编译可以通过,但是要执行的话,还会报“计算机中丢失libmx.dll。”的错误。*******
原因:matlab2010a版本的环境变量出现了问题。libmx.dll是存在于D:/Program Files/MATLAB/R2010a/bin/win32文件夹中,而在Win7系统变量里Matlab在安装的时候时只写入了路径D:/Program Files/MATLAB/R2010a/bin,故系统不会自动到其子文件中找dll,从而报错说找不到文件。
解决办法:由于旧版本的Matlab中没有将这些dll分离放到win32子文件夹中。所以只要在系统变量中包含路径D:/Program Files/MATLAB/R2010a/bin/win32即可。
并且要重新启动一下VS!!!!!!!!!!!!!!!!!!!
***************************************************
经过测试,顺利通过!