首先VS配置
这一步很重要,类似于其他C++库的配置,如:添加包含目录和库路径。添加库目录(自己的MATLAB安装路径中查找):D:\matlab\extern
添加库路径(自己的MATLAB安装路径中查找):D:\matlab\extern\lib\win64\microsoft
配置系统环境变量
在Windows环境变量中的系统变量中“Path”中新增下:
D:\matlab\bin\win64;
环境变量配置完成后要重启
matlab配置
在Matlab的command window输入:mex -setup C++
然后在输入mbuild -setup
选择mex -setup C++ -client MBUILD
配置结束
开始测试
#include"engine.h" // 添加matlab引擎库的头文件
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
// 导入相关lib库
#pragma comment(lib, "libeng.lib")
#pragma comment(lib, "libmx.lib")
#pragma comment(lib, "libmat.lib")
int main(void)
{
Engine *ep;
// 启动引擎
if (!(ep = engOpen("\0")))
{
fprintf(stderr, "\n打开Matlab引擎失败!\n");
return EXIT_FAILURE;
}
// 执行:
int Nsample = 50;
const double PI = 3.1415926;
double *t = new double[Nsample];
for (int i = 0; i < Nsample; i++)
{
t[i] = i * 2 * PI / Nsample;
}
mxArray *T = NULL, *result = NULL;
T = mxCreateDoubleMatrix(1, Nsample, mxREAL);
memcpy((void *)mxGetPr(T), (void *)t, Nsample * sizeof(t[0]));
// 把变量T存入Matlab工作区
engPutVariable(ep, "X", T);
// 执行Matlab命令 ??
engEvalString(ep, "Y=cos(X);");
engEvalString(ep, "plot(X,Y);");
engEvalString(ep, "title('y=cos(x)');");
engEvalString(ep, "xlabel('x');");
engEvalString(ep, "ylabel('y');");
fgetc(stdin);
// 清除对象,不能漏!
mxDestroyArray(T);
engEvalString(ep, "close;");
// 关闭引擎,不能漏!
engClose(ep);
return EXIT_SUCCESS;
}
可能出现的报错之一:提示无法定位程序输入点
解决方案: libeng.dll、libmx.dll和libut.dll复制到c:\windows\system32中,如果显示还缺少什么 也是复制进去就可以了。在这里是缺少了tbb.dll,将其复制到c:\windows\system32就可以额