matlab

最近升级了matlab2018b,试了网上好的mingw-w64配置都不成功,各种的不成功,包括mingw-w64官网上提供的连接。在最后试了一下matlab自带的工具包连接,发现是一键配置成功,感觉怀疑人生了!下面简单记录,以免其他人犯同样错误。
1、首先应该成功安装matlab2018,然后点击“获取附件功能”。
在这里插入图片描述

2、点击“MinGW-w64”
在这里插入图片描述

3、点击右上角“安装”,目前因为我已经安装成功,变成“管理”了。(免费注册个账号,需要登录)
在这里插入图片描述

4、后续就可以进行编译了。(以下是转载)

最近,帮师兄把一些现成的C++代码编译成为Matlab可以直接调用的.mexw32/.mexw64(由系统的位数决定)形式的文件。达到Matlab“扬长避短”,加快运行速度的目的。

由于之前完全没有接触过这方面的知识,所以首先就得找一些入门性的文章来看一看,把下面这篇博文看一下,基本上就知道该做些什么事情了:

http://blog.csdn.net/zouxy09/article/details/20553007

总结起来就是,你得include一个叫"mex.h"的头文件,然后还得自己再写一个mexFunction()的接口函数(实现Matlab和C++之间的“交流”),最后,打开你的Matlab,mex -setup,选择一个合适的编译器(不同版本的Matlab出现的结果可能不一样)。最后再mex一下对应的.cpp文件,就可以生成我们想要的.mexw32/.mexw64文件了。

看完上面的博文之后,会发现作者举的两个例子都是对一个.cpp文件进行编译而已,而师兄给我的C++代码却是一个.h文件和一个.cpp文件(假设为Add.h和Add.cpp),Add.h文件是一个类的声明,而Add.cpp文件是对类的成员函数的实现,那么,这个时候,我应该怎样进行编译呢?

答案其实在上面的博文中也有提到,只是没说得那么详细,玄机就在这里:

恩,没错,这个时候得根据自己的需要(具体看要用到Add.h)中的哪些函数,然后额外再写一个类似于main.cpp的文件,在main.cpp中将Add.h包含进来,文件中的函数可以调用Add类的成员函数,来实现我们想到达到的功能。最后才mex 上面相互依赖的两个.cpp文件即可得到相应功能的.mexw32/.mexw64文件了。

可能单单靠文字描述还不是很清晰,比如我对上面的博文的第一个例子做了下面的修改:

新建一个Add类,具体的文件内容如下:

#pragma once
#include <iostream>
 
using namespace std;
 
class Add
{
public:
    Add();
    ~Add();
    double addadd(double, double);
};

Add.cpp(对Add.h的成员函数的实现):

#include "Add.h"
 
 
Add::Add()
{
}
 
 
Add::~Add()
{
}
 
double Add::addadd(double x, double y)
{
    return x + y;
}

mexAdd.cpp(功能类似于main.cpp文件,调用上面的Add类的成员函数,以实现我们想要实现的功能):

#include"Add.h"
#include"mex.h"
 
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
    double *a;
    double b, c;
    plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL);
    a = mxGetPr(plhs[0]);
    b = *(mxGetPr(prhs[0]));
    c = *(mxGetPr(prhs[1]));
    Add m;
    *a = m.addadd(b, c);
}

写好上面的三个文件(放在同一个目录下面)之后,打开Matlab,设置编译器,然后cd 到上面的三个文件所在的目录下面,再mex mexAdd.cpp Add.cpp即可得到一个mexAdd.mexw64/mexAdd.mexw32。

这样一来,我们就实现了编译多个相互依赖的.cpp文件,以一个主要的.cpp文件来写接口函数,调用其他.cpp文件中的类的函数的功能。
BTW,如果有依赖OpenCV库的话,可以参考上面的博文写一个make.m文件,主要要修改下面的红色方框部分:
在这里插入图片描述

将红色方框改为多个.cpp文件(比如:‘mexAdd.cpp Add.cpp’),再运行make.m,即可得到一个.mexw32/.mexw64文件了
原文:https://blog.csdn.net/qq295456059/article/details/52077527

Matlab

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值