开发环境:vs2013 cpp qt win7 matlab R2016b
1、matlab R2016b版本界面主页,设置路径,把本地存储m代码文件的目录添加到matlab的程序搜索目录中。
2、vs2013代码中
#include “engine.h”
头文件目录设置
E:\MATLAB\R2016b\extern\include
库路径设置
E:\MATLAB\R2016b\extern\lib\win64\microsoft
库添加
libeng.lib
libmat.lib
libmex.lib
libmx.lib
3、cpp代码示例
Engine *ep = NULL;
mxArray *value = NULL;
if (!(ep = engOpen(NULL)))
{
fprintf(stderr, "\n无法启动MATLAB引擎\n");
return;
}
engEvalString(ep, "value = test_add(1,5)");//matlab设置路径,把存储本地m文件的路径添加到默认搜索路径中。
value = engGetVariable(ep, "value");
int M = mxGetM(value);
int N = mxGetN(value);
double i = 0;
memcpy((void *)&i, (void *)mxGetPr(value), sizeof(mxGetPr(value)) * M * N);
mxDestroyArray(value);
engClose(ep);
4、test_add.m文件的代码如下:
function [c] =test_add(a,b)
c = a+b;
end
5、直接运行matlab代码的示例
Engine *ep = NULL;
mxArray *value = NULL;
if (!(ep = engOpen(NULL)))
{
fprintf(stderr, "\n无法启动MATLAB引擎\n");
return ;
}
engEvalString(ep, "value = 1+5");
value = engGetVariable(ep, "value");
int M = mxGetM(value);
int N = mxGetN(value);
double i = 0;
//printf("value = %f\n", *mxGetPr(value));
memcpy((void *)&i, (void *)mxGetPr(value), sizeof(mxGetPr(value)) * M * N);
mxDestroyArray(value);
engClose(ep);