VS2015+MATLAB2016b混合编程

欢迎转载,转载请注明出处。

参考文献: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.测试结果:






  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值