一、环境准备 安装VS2010和MATLAB2012a
二、项目准备
新建Win32控制台项目,并修改为64位配置。增加包含目录:
D:\Program Files\MATLAB\R2012a\extern\include
D:\Program Files\MATLAB\R2012a\extern\include\win64
增加库目录
D:\Program Files\MATLAB\R2012a\extern\lib\win64\microsoft
增加链接库
libeng.lib libmx.lib
修改调试选项中的工作目录(否则会提示找不到对应的.dll):
D:\Program Files\MATLAB\R2012a\bin\win64
三、编写代码
// MatlabDemo.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "engine.h"
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
char buf[1024];
Engine * ep = engOpen(NULL);
//engSetVisible(ep, false);
engSetVisible(ep, true);
engOutputBuffer(ep, buf, 1024);
mxArray * mxN = mxCreateDoubleScalar(3);
engPutVariable(ep, "N", mxN);
engEvalString (ep, "D=rand(N, N)");
mxArray * mxData = engGetVariable(ep, "D");
std::cout << buf << std::endl;
engClose(ep);
return 0;
}
四、编译运行。
可看到输出结果
D =
0.8147 0.9134 0.2785
0.9058 0.6324 0.5469
0.1270 0.0975 0.9575
五、总结
这种方式需要在目标计算机上安装MATLAB,使得引擎能够独立运行起来。C程序需解析运行结果的字符串。