要在VC中成功编译Matlab引擎程序,必须包含引擎头文件engine.h。并引入Matlab对应的库文件libmx.lib、libmat.lib、libeng.lib。
1) 通过菜单工具/选项,打开选项页,点击项目和解决方案,然后在页面右面“显示以下内容的目录”下拉列表框中选择“包含文件”,添加路径:"X:\Program files\MATLAB\R2010b\extern\include"。X代表matlab所在盘符,一般为c或者d。
2) 选择“库文件”,添加路径:
X:\Program Files\MATLAB\R2010a\extern\lib\win32\microsoft。
3) 右击工程/属性,打开项目属性页,选择链接器/输入,在附加依赖项编辑框中,添加文件名libmx.lib libmat.lib libeng.lib。
注意,1,2主用设置一次,因为他的设置时全局的,3每个不同的工程要设置一次。
然后,还要修改环境变量,否则会提示 libmx.dll找不到,右键我的电脑->高级->环境变量->系统变量,找到PATH,将matlab的
D:\Program Files\MATLAB\R2010a\bin\win32路径加进去,dll文件在这个目录下。然后重启电脑,不重启电脑的话要重启vs,就可以打开matlab了。
matlab引擎包好了这样一些常见函数。这些函数可以在engine.h 、matrix.h 中查看。
Engine* engOpen(const char* startcmd);
int engClose(Engine* ep);
int engEvalString(Engine* ep, const char* string);
Engine *engOpenSingleUse(const char *startcmd, void *reserved,int *retstatus );
1 EXTERN_C int engOutputBuffer( 2 Engine *ep, /* engine pointer */ 3 char *buffer, /* character array to hold output */ 4 int buflen /* buffer array length */ 5 );
1 EXTERN_C int engPutVariable( 2 Engine *ep, /* engine pointer */ 3 const char *var_name, 4 const mxArray *ap /* array pointer */ 5 );
EXTERN_C mxArray *engGetVariable( Engine *ep, /* engine pointer */ const char *name /* name of variable to get */ );
mxArray *T=NULL
T=mxCreateDoubleMatrix(1,1,mxREAL); matlab有很多产生矩阵的函数,参看matrix.h文件。
memcpy((char*)mxGetPr(T),(char*)t,1*sizeof(double));