VS2010调用matlab2010b引擎

VS2010环境配置(32位的运行平台对应32位的matlab)

1. 建立win32工程,添加C++测试代码:

#include

#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. 工程属性配置:

1)右键工程属性-->VC++目录--> 包含目录:(或者 在 C/C++ -->常规--> 附加包含目录下添加)

D:\MATLAB\R2010b\extern\include\win32

D:\MATLAB\R2010b\extern\include

VS2010调用matlab2010b引擎_第1张图片

2) 库目录:

在“连接器”项 (启动项目)--> “常规”下 添加(如果是非启动项目,则在库管理器项的常规下添加)

D:\MATLAB\R2010b\extern\lib\win32\microsoft

VS2010调用matlab2010b引擎_第2张图片

3) 链接器-->输入-->附加依赖项:

(非启动项目在“库管理器” 项的“常规”下的“附加依赖项”里添加)

VS2010调用matlab2010b引擎_第3张图片

3. 环境变量配置(电脑系统属性)

D:\MATLAB\R2010b\runtime\win32;D:\MATLAB\R2010b\bin\win32;

 VS2010调用matlab2010b引擎_第4张图片

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引擎)