MATLAB调用C/C++混合编程更换编译器方法,Visual 2017和MinGW64

Visual Studio 2017编译器与MATLAB中MEX混合编程报错的问题。

1.查看MATLAB使用的编译器和设置

问题如链接所显示
链接:link.
运行SFM代码,使用vs2017作为编译器会报错,需要使用MinGW-w64 C/C++ Compiler执行。首先在MATLAB中使用命令:

// MATLAB 命令行窗口
mex -setup -v;

出现:
MATLAB调用C/C++混合编程更换编译器方法,Visual 2017和MinGW64_第1张图片

如上图显示,在我安装MinGW64 Complier之前只有Visual C++ 2017一个编译器选项,在安装后运行上述命令后点击选择mex编译器类别或者执行MATLAB提示的命令进行更换。
MATLAB调用C/C++混合编程更换编译器方法,Visual 2017和MinGW64_第2张图片

2.MinGW64的安装及下载链接:

链接: link.
MATLAB调用C/C++混合编程更换编译器方法,Visual 2017和MinGW64_第3张图片
本人按照教程分别添加了“用户变量-path”、“系统变量-path”、“系统变量-MW_MINGW64_LOC”三个,“用户变量”似乎是没有用的。如按照下载前文链接的MinGW64软件包,应该是将“\bin”文件中包含“gcc.exe”等,将包含这些可执行文件的路径添加到“path”中,并且新建系统变量“MW_MINGW64_LOC”变量值为编译器的安装路径。(压缩包解压后就是了,并不需要install过程)
变量设置完成后,打开cmd命令行,输入:

// cmd 命令行
>>gcc -v;

安装成功后显示版本信息如下图:“gcc version 6.4.0”
“CXXFLAGS”则和下文中更改MATLAB的“mex”命令有关。
配置系统变量是不是需要重启电脑生效呢?我想来对于这项修改应该是不需要的,我这里没有重启电脑就可以正常使用了,另一台电脑不重启就是不行,我不懂里面的道理,我只能称之为玄学。
MATLAB调用C/C++混合编程更换编译器方法,Visual 2017和MinGW64_第4张图片

安装了8.1.0版本和6.4.0版本,运行mex时MATLAB还是显示警告,编译器版本非MATLAB支持版本,查阅发现MATHWORKS上表示支持6.3.0版本,但是编译是可以通过的,故并未特意寻找对应版本(6.3.0)。
注意:下载好安装包后不要放在含有空格的路径下。一开始并没有注意到这个问题,造成MATLAB虽然能找到MinGW编译器,但是mex时会无法调用。
MATLAB调用C/C++混合编程更换编译器方法,Visual 2017和MinGW64_第5张图片
安装并且设置好以后,将原先MATLAB脚本中的“mex” 替换为下述代码:

// MATLAB 脚本
mex -v CXXFLAGS='$CXXFLAGS -fpermissive';

重启MATLAB,按照1中设置编译器为MinGW64 Compiler,点击运行,显示编译成功。

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