vs2008中调用matlab3013a程序配置方法
2015-07-26 17:02
330 查看
1.在vs2008中建立一个win32控制台应用程序,;
2.在vs2008中的 “工具”——>“选项”——>"项目与解决方案"——>"VC++目录"——>右上角选择"包含文件",在下面
包含:D:\Program Files\MATLAB\R2013a\extern\include
3.再选择“库文件”,在下面包含:D:\Program Files\MATLAB\R2013a\extern\lib\win32\microsoft ,然后按确定
4.选择左边新建的项目名,右击项目名,选择“属性”——>"配置属性"——>“链接器”——>"输入"——>"附加依赖项"中添加:
libmx.lib libmat.lib libeng.lib 各文件之间以空格隔开。
在网上找了个程序测试了一下:
#include <iostream>
#include <math.h>
#include "engine.h"
#pragma comment(lib, "libmx.lib")
#pragma comment(lib, "libmat.lib")
#pragma comment(lib, "libeng.lib")
using namespace std;
using namespace std;
int main()
{
const int N = 50;
double x
,y
;
int j = 1;
for (int i=0; i<N; i++) //计算数组x和y
{
x[i] = (i+1);
y[i] = sin(x[i]) + j * log(x[i]); //产生-之间的随机数赋给xx[i];
j*= -1;
}
Engine *ep; //定义Matlab引擎指针。
if (!(ep=engOpen(NULL))) //测试是否启动Matlab引擎成功。
{
cout <<"Can't start Matlab engine!" <<endl;
exit(1);
}
//定义mxArray,为行,N列的实数数组。
mxArray *xx = mxCreateDoubleMatrix(1,N, mxREAL);
mxArray *yy = mxCreateDoubleMatrix(1,N, mxREAL); //同上。
memcpy(mxGetPr(xx), x, N*sizeof(double)); //将数组x复制到mxarray数组xx中。
memcpy(mxGetPr(yy), y, N*sizeof(double)); //将数组x复制到mxarray数组yy中。
engPutVariable(ep, "xx",xx); //将mxArray数组xx写入到Matlab工作空间,命名为xx。
engPutVariable(ep, "yy",yy); //将mxArray数组yy写入到Matlab工作空间,命名为yy。
//向Matlab引擎发送画图命令。plot为Matlab的画图函数,参见Matlab相关文档。
engEvalString(ep, "plot(xx, yy); ");
mxDestroyArray(xx); //销毁mxArray数组xx和yy。
mxDestroyArray(yy);
cout <<"Press any key to exit!" <<endl;
cin.get();
engClose(ep); //关闭Matlab引擎。
}
*******在做完以上工作后,编译可以通过,但是要执行的话,还会报“计算机中丢失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即可。
5.配置环境变量:右击桌面“计算机”——>"属性"——>"高级系统设置"——>“环境变量”——>系统变量中“path”中添加:D:\Program Files\MATLAB\R2013a\bin\win32。
进测试,成功调用了matlab
2.在vs2008中的 “工具”——>“选项”——>"项目与解决方案"——>"VC++目录"——>右上角选择"包含文件",在下面
包含:D:\Program Files\MATLAB\R2013a\extern\include
3.再选择“库文件”,在下面包含:D:\Program Files\MATLAB\R2013a\extern\lib\win32\microsoft ,然后按确定
4.选择左边新建的项目名,右击项目名,选择“属性”——>"配置属性"——>“链接器”——>"输入"——>"附加依赖项"中添加:
libmx.lib libmat.lib libeng.lib 各文件之间以空格隔开。
在网上找了个程序测试了一下:
#include <iostream>
#include <math.h>
#include "engine.h"
#pragma comment(lib, "libmx.lib")
#pragma comment(lib, "libmat.lib")
#pragma comment(lib, "libeng.lib")
using namespace std;
using namespace std;
int main()
{
const int N = 50;
double x
,y
;
int j = 1;
for (int i=0; i<N; i++) //计算数组x和y
{
x[i] = (i+1);
y[i] = sin(x[i]) + j * log(x[i]); //产生-之间的随机数赋给xx[i];
j*= -1;
}
Engine *ep; //定义Matlab引擎指针。
if (!(ep=engOpen(NULL))) //测试是否启动Matlab引擎成功。
{
cout <<"Can't start Matlab engine!" <<endl;
exit(1);
}
//定义mxArray,为行,N列的实数数组。
mxArray *xx = mxCreateDoubleMatrix(1,N, mxREAL);
mxArray *yy = mxCreateDoubleMatrix(1,N, mxREAL); //同上。
memcpy(mxGetPr(xx), x, N*sizeof(double)); //将数组x复制到mxarray数组xx中。
memcpy(mxGetPr(yy), y, N*sizeof(double)); //将数组x复制到mxarray数组yy中。
engPutVariable(ep, "xx",xx); //将mxArray数组xx写入到Matlab工作空间,命名为xx。
engPutVariable(ep, "yy",yy); //将mxArray数组yy写入到Matlab工作空间,命名为yy。
//向Matlab引擎发送画图命令。plot为Matlab的画图函数,参见Matlab相关文档。
engEvalString(ep, "plot(xx, yy); ");
mxDestroyArray(xx); //销毁mxArray数组xx和yy。
mxDestroyArray(yy);
cout <<"Press any key to exit!" <<endl;
cin.get();
engClose(ep); //关闭Matlab引擎。
}
*******在做完以上工作后,编译可以通过,但是要执行的话,还会报“计算机中丢失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即可。
5.配置环境变量:右击桌面“计算机”——>"属性"——>"高级系统设置"——>“环境变量”——>系统变量中“path”中添加:D:\Program Files\MATLAB\R2013a\bin\win32。
进测试,成功调用了matlab
相关文章推荐
- VS2008中文试用版改为正式版的破解方法
- 解析在main函数之前调用函数以及对设计的作用详解
- 关于vs2005、vs2008和vs2010项目互转的总结
- 让VS2008对JQuery语法的智能感知更完美一点
- jQuery-ui引入后Vs2008的无智能提示问题解决方法
- vs2008最近打开的项目清除方法
- 在VS2008中编译MYSQL5.1.48的方法
- java和matlab画多边形闭合折线图示例讲解
- C#调用Matlab生成的dll方法的详细说明
- jQuery在vs2008及js文件中的无智能提示的解决方法
- 在vs2008中使用AJAX开发.net 2.0下的Web程序的方法
- VS2010、VS2008等项目的默认浏览器修改方法(图文)
- 从java中调用matlab详细介绍
- lstrlenW不是ATL的成员解决方法 (VS2008)
- VC++与Matlab混合编程的快速实现
- VS2008所有快捷键
- Qt安装—图文并茂搭建VS2008+QT开发环境
- OpenCV学习笔记(二十五)——OpenCV图形界面设计Qt+VS2008
- Matlab 矩阵运算
- matlab与opencv部分函数的对照