首页 > 代码库 > VS2010调用matlab2010b引擎
VS2010调用matlab2010b引擎
VS2010环境配置(32位的运行平台对应32位的matlab)
1. 建立win32工程,添加C++测试代码:
#include <iostream>
#include "windows.h"
#include "math.h"
#include "engine.h"
int main()
{
const int N = 50;
double x[N], y[N];
int j = 1;
for(inti = 0;i <N;i ++)
{
x[i] = (i + 1);
y[i] =sin(x[i]) +j * log(x[i]);
j*= -1;
}
Engine*pEng =NULL;
//open engine
if (!(pEng =engOpen(NULL)))
{
std::cout<<"Openmatlab enging failed!"<<std::endl;
system("pause");
return-1;
}
mxArray*xx =mxCreateDoubleMatrix(1,N,mxREAL);
mxArray*yy =mxCreateDoubleMatrix(1,N,mxREAL);
memcpy(mxGetPr(xx),x,N*sizeof(double));
memcpy(mxGetPr(yy),y,N*sizeof(double));
engPutVariable(pEng,"xx",xx);
engPutVariable(pEng,"yy",yy);
std::stringevalString="plot(xx,yy);";
engEvalString(pEng,evalString.c_str());
mxDestroyArray(xx);
mxDestroyArray(yy);
Sleep(3*60*100);
//close engine
if(NULL !=pEng)
{
engClose(pEng);
}
system("pause");
return 1;
}
2. 工程属性配置:
右键工程属性-->VC++目录-->
1) 包含目录:
D:\MATLAB\R2010b\extern\include\win32
D:\MATLAB\R2010b\extern\include
2) 库目录:
D:\MATLAB\R2010b\extern\lib\win32\microsoft
3) 链接器-->输入:
3. 环境变量配置
D:\MATLAB\R2010b\runtime\win32;D:\MATLAB\R2010b\bin\win32;
4. 可能的出错:
1) win32的C++工程<-->matlab 64位或 win64的c++工程<-->matlab 32位;
出错提示:应用程序无法正常启动(0xc00007)
正确的为:win32的C++工程<-->matlab 32位或win64的c++工程<-->matlab 64位;相应的,在配置VS工程时,选用不同的包含目录和库目录和在环境配置时,添加不同的平台环境。
2) 环境变量没配置正确
出错提示:计算机中丢失libmx.dll
3) 若程序正常运行,但无法打开matlab引擎,则需进行“注册”。
方法为:打开cmd,转到目录 MATLAB安装目录\bin,输入matlab /regserver
VS2010调用matlab2010b引擎