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

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

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

  • 第一步

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

  • 第二步

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

  • 第三步

    点击右上角的配置管理器,
    vs2013中使用matlab2014b引擎实现c++和matlab混合编程_第1张图片

新建一个活动解决方案,
vs2013中使用matlab2014b引擎实现c++和matlab混合编程_第2张图片

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

  • 第四步

    点击vc++目录打开相应的窗口,设置可执行文件目录,包含目录,库目录三个目录。
    vs2013中使用matlab2014b引擎实现c++和matlab混合编程_第3张图片
    设置分别如下:(注意请自行修改相关路径,并且注意后面用;隔开)
    可执行文件目录: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;点击确定完成相关配置。
    vs2013中使用matlab2014b引擎实现c++和matlab混合编程_第4张图片

  • 第六步

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

#include
#include 
#include
#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中使用matlab2014b引擎实现c++和matlab混合编程_第5张图片

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

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

遇到的问题:

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

vs2013中使用matlab2014b引擎实现c++和matlab混合编程_第6张图片

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

你可能感兴趣的:(C++,matlab)