首页 > 代码库 > 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引擎