针对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,则可以在上一步中看到MATLAB
mex -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中加)即可。