vc调用matlab (我的环境是win7+vs2008+matlab2010a)

来源:互联网 发布:oracle数据库教学视频 编辑:程序博客网 时间:2024/06/04 19:17

使用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”,各个文件之间以空格隔开。

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即可。

 

***************************************************

经过测试,顺利通过!

原创粉丝点击