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;

出现:
图1

如上图显示,在我安装MinGW64 Complier之前只有Visual C++ 2017一个编译器选项,在安装后运行上述命令后点击选择mex编译器类别或者执行MATLAB提示的命令进行更换。
图2

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

链接: link.
图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”命令有关。
配置系统变量是不是需要重启电脑生效呢?我想来对于这项修改应该是不需要的,我这里没有重启电脑就可以正常使用了,另一台电脑不重启就是不行,我不懂里面的道理,我只能称之为玄学。
图4

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值