vs2013中使用matlab2014b引擎实现c++和matlab混合编程

在Visual C++ 2013 工程中使用 Matlab2014b 提供的图形引擎进行绘图的详细过程。 

在编程过程中有时候会遇到在c++中调用matlab,由于matlab强大的图像处理能力和科学计算能力,在c++中适当的调用matlab能够极大的提高编程效率,尤其是在处理图像和科学计算的时候。
最近两天研究这方面的配置花了好长时间,终于在使用多种方法之后得到了解决,下面将自己的配置过程以及遇到的一些问题写下了,方便自己以后查看,同时也希望能帮到和我一样遇到类似困难的朋友!
前期准备:
下载vs2013和matlab2014b(版本有差异应该不影响后续),并且安装。下载地址请自行google。
开始配置:

  • 第一步

    打开vs2013,新建一个win32控制台应用程序,名称,位置随意。

  • 第二步

    在项目上右键点击属性,打开项目属性页,点击配置属性。

  • 第三步

    点击右上角的配置管理器,
    这里写图片描述

新建一个活动解决方案,
这里写图片描述

选择x64位活动平台,点击确认。该步骤将32位平台转换为64为平台,原因是vs2013初始只能创建32位活动平台,如果电脑上装的是64位的matlab,就必须使用64位的平台,32位的matlab的朋友请自行忽视这一步。

  • 第四步

    点击vc++目录打开相应的窗口,设置可执行文件目录,包含目录,库目录三个目录。
    这里写图片描述
    设置分别如下:(注意请自行修改相关路径,并且注意后面用;隔开)
    可执行文件目录:D:\Hosea_Pro\MATLAB\extern\include\win64;
    包含目录:D:\Hosea_Pro\MATLAB\bin\win64;
    库目录:D:\Hosea_Pro\MATLAB\extern\lib\win64\microsoft;

  • 第五步

    点击连接器下的输入,在附加依赖项中输入libmat.lib;libeng.lib;libmx.lib;点击确定完成相关配置。
    这里写图片描述

  • 第六步

    新建一个cpp文件进行测试:
    测试代码来借鉴于网上一位博主的代码。

#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();
}

生成解决方案,运行,结果如下。

这里写图片描述

可以看到,vs2013调用matlab完美成功。

  • 第七步
    基本上改了平台,填了目录,填了库名,就可以万事大吉了。但是有时候往往还是会有各种破事,比如提示libeng.dll找不到啊之类的。这时候呢,可以通过修改环境变量的方式来解决这个问题。D:\Hosea_Pro\MATLAB\R2014b\bin\win64; 把原来可执行程序的目录加入到系统的PATH环境变量中,然后记得重启。。。。就可以解决问题了

遇到的问题:

第一个遇到的问题就是平台不合适的问题,这个问题也是困扰我时间最长的一个问题,刚开始的时候没有注意的这个问题,所以出现了许多无法解析外部符号的问题:

这里写图片描述

主要参考自(http://www.cnblogs.com/Vonng/p/4232586.html)

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值