欢迎转载,转载请注明出处。
参考文献:http://www.cnblogs.com/Vonng/p/4232586.html
因为老板有需求,所以没办法,只能再进行MATLAB和VS的混编,参考了上边的大神写的博客,加上自己的实践,留下了这个笔记。
1.软件:
VS2015+Matlab2016b+Win10(64位)。
2.建立项目:
首先在VS中建立一个空项目。
把平台选成X64平台,这里很重要。
3.属性配置(Debug和Release都这样配置):
VC++目录中的
可执行文件目录:F:\Matlab2016b\bin\win64
包含目录:F:\Matlab2016b\extern\include
库目录:F:\Matlab2016b\extern\lib\win64\microsoft
【链接器】——【输入】——【附加依赖项】
附加依赖项添加:libmat.lib、libeng.lib、libmx.lib
4.添加环境变量:
把Matlab里的bin\win64的路径,添加到系统变量的Path中。
我的路径如下:F:\Matlab2016b\bin\win64
重要的事情说三遍:重启、重启、重启,一定要重启电脑,不然真的不行。
5.其他:
如果想同时使用CUDA或者OpenCV直接在属性界面里边配置即可,与Matlab配置不发生任何关系。
6.测试程序:
#include<cstdlib>
#include <cstdio>
#include<cstring>
#include"engine.h"
const int BUFFER_SIZE = 1024;
char buffer[BUFFER_SIZE];
void test()
{
Engine* ep;
mxArray *x1 = NULL;
mxArray *y1 = NULL;
if ((ep = engOpen("")) == NULL)
{
printf("Engine Fail");
}
engOutputBuffer(ep, buffer, BUFFER_SIZE);
printf("Init Success");
double x[5] = { 1.0, 2.5, 3.7, 4.4, 5.1 };
double y[5] = { 3.3, 4.7, 9.6, 15.6, 21.3 };
x1 = mxCreateDoubleMatrix(1, 5, mxREAL);
y1 = mxCreateDoubleMatrix(1, 5, mxREAL);
memcpy((void *)mxGetPr(x1), (void *)x, sizeof(x));
memcpy((void *)mxGetPr(y1), (void *)y, sizeof(y));
engPutVariable(ep, "x", x1);
engPutVariable(ep, "y", y1);
engEvalString(ep, "plot(x,y)");
getchar();
engClose(ep);
}
int main()
{
test();
}
输入上述的测试程序,不需要任何图片。
7.测试结果: