MATLAB与VS混合编程

3 篇文章 0 订阅
1 篇文章 0 订阅

环境:WIN10 64位+VS2013专业版+Matlab2015bWin32

实现功能:Matlab2015bWin32将函数生成动态库,在VS2013中调用。

具体实现过程:

首先添加环境变量和确认是否适合混合编程:
这里写图片描述

打开matlab,在工作空间中输入mex –setup,回车。

这里写图片描述

当弹出如上图,说明matlab支持VS2013和VS2015,本教程使用的是VS2015,可以进行混合编程。

开始实现混合编程:

Matlab:

在工作空间中输入:deploytool,弹出compile窗口,选择Library Compiler;

这里写图片描述

这里写图片描述

这里我的.m文件如下:

这里写图片描述

选择C++ Shared Library后,点击右侧加号,选择需要生产的.m文件。

这里写图片描述

点击Settings,弹出文件选择路径,选择文件生成的路径。最后点击Package。开始生成动态文件。

这里写图片描述

这里写图片描述

可以关闭matlab。开始VS操作。
打开生成的打包文件下的for_redistribution_files_only文件夹,将生成的dll、h、lib文件复制到VS工程下
Matlab文件:

这里写图片描述

首先新建VS c++工程(过程省略)。我建的工程名为Add。将刚才的复制文件放在指定VS路径下。
VS路径

这里写图片描述

右击解决方案资源管理器Add,并选择属性项。这里平台选择活动(Win32)

在配置属性->VC++目录
在包含目录中添加:matlab安装路径\MATLAB\R2015b\extern\include;
在库目录中添加:matlab安装路径\MATLAB\R2015b\extern\lib\win32\microsoft;

这里写图片描述

在配置属性->连接器->输入
附加依赖项中添加:
libeng.lib
libmat.lib
libmex.lib
libmx.lib
mclmcrrt.lib
mclmcr.lib
Add.lib

这里写图片描述

主程序:

#include<iostream>
//#include "Add.h"
#include "Add.h"
using namespace std;

int main()
{
    if (!AddInitialize())
    {
        return -1;
    }
    int a = 20, b = 10;     // double a = 20.0, b = 10.0;
    int c;                  // double c;
    mwArray mwA(1, 1, mxINT32_CLASS);       // mwArray mwA(1, 1, mxDOUBLE_CLASS);
    mwArray mwB(1, 1, mxINT32_CLASS);       // mwArray mwA(1, 1, mxDOUBLE_CLASS);
    mwArray mwC(1, 1, mxINT32_CLASS);       // mwArray mwA(1, 1, mxDOUBLE_CLASS);

    mwA.SetData(&a, 1);
    mwB.SetData(&b, 1);

    Add(1, mwC, mwA, mwB);
    c = mwC.Get(1, 1);

    cout << c << endl;

    AddTerminate();
}

最终运行结果:

这里写图片描述

前一段时间在用,今天又拾起来了,怕忘,总结一下。

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值