(2)设置工程目录: ( 我并没有设置)
项目右键->属性->C/C++->常规->附件包含目录:添加
<MATLAB>\R2010b\extern\include\win64
<MATLAB>\R2010b\extern\include\
项目右键->属性->链接器->常规:添加
<MATLAB>\R2010b\extern\lib\win32\microsoft
<MATLAB>\R2010b\extern\lib\win64\microsoft
项目右键->属性->链接器->输入->附件依赖性:添加 (必做)
libeng.lib
libmat.lib
libmex.lib
libmx.lib
注:1.lib文件包含在<MATLAB>\R2010b\extern\lib\win64\microsoft,可根据需要增减
2.附件依赖性在VS2010前以空格隔开,在VS2010后使用;隔开。
截图:
我的截图:
项目右键->属性->链接器->高级->目标计算机:更改(只针对64位WINDOWS) (选做)
MachineX86 -> MachineX64
注:分析原因为MATLAB根据计算机平台选择了X64编译环境,如此处不修改会出现 错误3
(3)配置管理器设置(只针对64位WINDOWS) (必做)
生成->配置管理器->平台:更改
Win32->X64
注:分析原因为配合链接器中目标计算机的修改,如此处不修改会出现 错误4
截图:
3.系统(Windows)环境设置 (必做)
我的电脑->属性->高级系统设置->高级->环境变量->Path,添加:
<MATLAB>\R2010b\bin;<MATLAB>\R2010b\extern\lib\win64\microsoft;<MATLAB>\bin\win64
注:1.Windows7的情况下,“用户变量”和“系统
变量”都需 添加,如不添加,运行时会出现 错误5
2.哈哈,别忘记重启哈,重启后生效
OK!配置就此结束,现在就开始engOpen吧!!对了,别忘记添加#include "engine.h"。
例程:
#include <iostream>
#include "windows.h"
#include "math.h"
#include "engine.h" //Matlab的头文件
int main ()
{
const int N = 50;
double x [ N ], y [ N ];
int j = 1;
for ( int i = 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 :: string evalString = "plot(xx,yy);" ;
engEvalString ( pEng , evalString . c_str ());
mxDestroyArray ( xx );
mxDestroyArray ( yy );
Sleep (3*60*100);
//close engine 关闭Matlab
if ( NULL != pEng )
{
engClose ( pEng );
}
system ( "pause" );
return 1;
}
效果;
附录:错误情况及解决
2.提示:“libeng.lib libmat.lib"无法打开
解决:附件依赖性在VS2010前以空格隔开,在VS2010后使用;隔开。
3.提示:“ "error LNK2019: 无法解析的外部符号 _interp1Initialize,该符号在函..."”
解决:操作如2.VS环境设置中的(2) 项目右键->属性->链接器->高级->目标计算机:更改...及(3)
4.提示:“ "模块计算机类型“X86”与目标计算机类型“x64”冲突..."”
解决:操作如2.VS环境设置中的(3)
4.提示:“ 系统丢失libeng.dll..."”
解决:操作如 3.系统环境设置
1.mbuild – setup后没有“VS2010”选项
解决:MATLAB 2010b 之后包含对VS2010编译器的支持,2010a及之前版本不包含支持。如果MATLAB环境较低,Matlab官方有一个补丁(http://www.mathworks.com/support/solutions/en/data/1-D5W493/?solution=1-D5W493)