在这里记录一下自己的挖坑、填坑过程。从mex环境到与成功调用
在具体的实现中,由于matlab具有很强的矩阵运算能力。而对于处理太多的循环结构运算却显得很吃力。所以在具体的实现中,我们可以在Matlab中调用其他语言的程序来达到最高效率的实现。这里我主要是是matlab来调用写好的C++代码为例。当然这也完全使用C语言的代码调用实现。
一、首先,我们需要有自己的编程环境,我的是matlab2017+MinGW-w64 C/C++ 编译器。由于自己的VS2015环境不能被matlab识别。(原因多半是Matlab和VS2015的 安装顺序有关:先安装VS之后再安装Matlab)。关于Matlab的安装这里就不赘述,百度自己解决。
1.MinGW-w64 C/C++编译器的安装,在matlab中虽然附加功能管理器可以安装,但是速度慢的惊人。我们可以直接到网上下载安装。这个TDM-GCC-64’搜索下载去吧!记得w64需要5.3的版本才能在matlab2017B中支持。(这里可以用5.3的安装文件来 覆盖TDM-GCC-64’文件达到)
2.安装之后重启Matlab,进入之后在命令行中输入mex -setup安装编译器,这时默认是C的编译环境。可选择mex -setup C++的选项;
以上就完成了环境的搭建配置。这一过程问题很多。慢慢摸索。
二、以下是我们的关键部分,对 C++代码的重写mex主函数入口(mexfunction)重点**
mex调用C++代码的关键过程有重写原本的main函数,改为mexfunction();该函数是matlab调用的主要入口。如果不重写 会报错如下:LINK : error LNK2001: 无法解析的外部符号 mexFunction