您的位置:首页 > 编程语言 > MATLAB

MatlabR2014a+Visual studio 2013 混合编程(都是 64位)

2016-03-11 21:18 573 查看
搞了一天终于成功了,

Matlab 和 C++ 混编

主要有两种方式 

一   matlib调用 C++

        貌似有 利用MEX技术和调用C/C++动态连接库。

       

二   VS 调用 matlab  (三种)

       1、调用matlab引擎

     Matlab的引擎库为用户提供了一些接口函数,利用这些接口函数,用户在自己的程序中以计算引擎方式调用Matlab文件。该方法采用客户机/服务器的方式,利用Matlab引擎将Matlab和C/C++联系起来。在实际应用中,C/C++程序为客户机,Matlab作为本地服务器。C/C++程序向Matlab计算引擎传递命令和数据信息,并从Matlab计算引擎接收数据信息。

    特点:

            利用计算引擎调用Matlab的特点是:节省大量的系统资源,应用程序整体性能较好,但不能脱离Matlab的环境运行,且运行速度较慢,但在一些特别的应用[9](例如需要进行三维图形显示)时可考虑使用

       2、利用mcc编译器生成的cpp和hpp文件

            Matlab自带的C++Complier--mcc,能将m文件转换为C/C++代码。因此,它为C/C++程序调用m文件提供了另一种便捷的方法。

        3、利用mcc编译器生成的DLL文件(主要讲这个)

  Matlab的C++ Complier不仅能够将Matlab的m文件转换为C/C++的源代码,还能产生完全脱离Matlab运行环境的独立可执行DLL程序。从而可以在C/C++程序中,通过调用DLL实现对
Matlab代码的调用
       

   
Matlab R2014 安装

        先贴出来下载地址:

                    链接: http://pan.baidu.com/s/1eRurHM6 密码: 8t4i

              博客:http://jingyan.baidu.com/article/c275f6ba218d43e33d7567fd.html(我是按照他的步骤走的,直到安装完,这样并没有完全破解,生成dll时还是有问题,搜索后下载这个,继续替换掉就可以生成dll了


)为了减少不必要的错误 安装的时候选择默认安装。

Matlab R2014 已经相当不错了 输入命令就可以直接设置了




贴下Matlab测试程序:add.m

      function [a,b]=add(x,y)

                a=2*x+y;

                b=3*y;

       end

输入命令:mcc -W cpplib:add -T link:lib add.m -C

其中 add.m 就是上面的测试程序  cpplib:add 这个add自己可以随意修改,之后会生成add.lib,add.h,add.dll。

 Visual studio 2013 (为了减少错误,默认安装)

链接: http://pan.baidu.com/s/1i4ogWCX 密码: sast

  配置系统环境变量:

用户变量:PATH

C:\Program Files\MATLAB\R2014a\bin\win64

系统变量:Path

C:\Program Files\MATLAB\R2014a\bin\win64

配置完系统变量要从新启动电脑才能生效。

 

新建项目 win32控制台应用程序。

   把add.lib,add.h,add.dll 放到程序目录下:

E:\Code\Matlab_test3\Matlab_test3    Matlab_test3进去之后还会有个Matlab_test3,放到后面的里面。

  调试模式是 debug X64(一定配置X64)

 配置:VC++目录

包含目录:C:\Program Files \MATLAB\R2014a\extern\include

库目录:C:\Program Files \MATLAB\R2014a\extern\lib\win64\microsoft

配置:链接器->输入选项中,附加依赖项

<code class="language-C++ hljs vbnet has-numbering">add.lib
libmat.lib
libmex.lib
mclmcr.lib
mclmcrrt.lib
<span class="hljs-keyword"></span></code>
 把 add.h文件添加到 头文件中

add.dll,add.lib文件添加到资源文件中









代码:

// Matlab_test3.cpp : 定义控制台应用程序的入口点。

#include "stdafx.h"

#include <iostream>

#include "mclmcr.h"

#include "matrix.h"

#include "mclcppclass.h"

#include"add.h"

using namespace std;

#pragma comment(lib,"add.lib")

int _tmain(int argc, _TCHAR* argv[])

{

    if (!addInitialize())    //初始化,在libmysvd.h中

    {

        cout << "Could not initialize libmysvd!" << endl;

        exit(0);

    }

    mwArray a(1, 1, mxDOUBLE_CLASS);

    mwArray b(1, 1, mxDOUBLE_CLASS);

    a(1, 1) = 20;

    b(1, 1) = 30;

    mwArray x(1, 1, mxDOUBLE_CLASS);

    mwArray y(1, 1, mxDOUBLE_CLASS);

    add(2, x, y, a, b);

    double *i = new double;

    double *j = new double;

    x.GetData(i, 1);

    y.GetData(j, 1);

    std::cout << "x=" << *i << "  y=" << *j << std::endl;

    system("pause");

    return 0;

}



 

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ matlab