0%

MATLAB mex找不到C编译器的解决方案

针对MATLAB错误使用 mex未找到支持的编译器或 SDK问题的可能解决方案。

在MATLAB R2019a下解决问题。

mex是用matlab调用C程序的接口工具。其使用方法可以参考:

https://ww2.mathworks.cn/help/matlab/call-mex-files-1.html?s_tid=CRUX_lftnav

今天使用该工具时报错找不到编译器,根据提示输入mex -setup后报错为:

1
错误使用 mex 未找到支持的编译器或 SDK。您可以安装免费提供的 MinGW-w64 C/C++ 编译器;请参阅安装 MinGW-w64编译器。有关更多选项,请访问http://www.mathworks.com/support/compilers/R2016a/win64.html。

解决过程是:

确认自己确实安装了任意一种C编译器

  • 如果已经安装过Microsoft Visual Studio,则应该可以在其文件目录下找到(通常为...\Microsoft Visual Studio\(year)\VC\Tools\MSVC\...
  • 如果已经安装过MinGW,则应该可以在bin文件夹下找到gcc.exe等文件。或者可以在终端输入gcc,如果不是“找不到命令”则可以在环境变量-系统变量-path中找到MinGW当时的位置。如果没装过MinGW,可以在https://www.mingw-w64.org/downloads/找到免费的下载链接。

查看详细的配置信息

在MATLAB终端输入mex -setup -v,检查MATLAB查找编译器的具体过程。

查看编译器配置文件

  • 打开有很多MATLAB的编译器配置文件.xml的目录(matlab\bin\win64\mexopts

  • 如果使用的是较新版本的Microsoft Visual Studio,则MATLAB或许并未为其创建配置文件。这方面或许可以参考https://blog.csdn.net/rookieWhoCanProduce/article/details/114821877(未验证可用性)

  • 如果使用的是gcc,则可以在上一步中看到MATLABmex -setup -v的输出中,和gcc相关的部分为

    1
    2
    3
    ... 正在查找编译器 'MinGW64 Compiler (C)'...
    ... 正在查找环境变量 'MW_MINGW64_LOC'...否
    找不到已安装的编译器 'MinGW64 Compiler (C)'。

    如果可以在cmd终端调用gcc,则说明MinGW的路径已经被添加到path环境变量中。而由上可知,MATLAB是在查找MW_MINGW64_LOC环境变量,通常安装MinGW时并不需要配置这个变量。

    因此,在环境变量-系统变量中加入名称为MW_MINGW64_LOC的环境变量(不是在path中加)即可。

欢迎关注我的其它发布渠道