Matlab 2017a无法识别Visual Studio 2017编译器求助
我之前在Windows 10环境下用MATLAB 2017a搭配VS2017 Community编译mex文件时,也碰到过完全一样的问题——mex setup -v能找到VS路径,但就是报Error using mex No supported compiler or SDK was found,官方的两个Bug修复也没起作用。后来折腾出几个亲测有效的方案,你可以挨个试试:
确认Windows SDK版本是否匹配
MATLAB 2017a对VS2017的兼容性要求是Windows 10 SDK 10.0.14393版本(对应Win10 1607周年更新)。如果你装的是更高版本的SDK(比如10.0.15063及以上),MATLAB可能识别不到。打开VS Installer选择“修改”,在“单个组件”里找到“Windows 10 SDK (10.0.14393.0)”并安装,重启MATLAB后再运行mex setup -v试试。我当时就是漏装了这个版本的SDK,装完立刻解决了问题。通过VS的命令提示符启动MATLAB
有时候MATLAB没法正确读取VS的环境变量,你可以试试:打开x64 Native Tools Command Prompt for VS 2017(在开始菜单的Visual Studio 2017文件夹里),然后在命令行输入MATLAB的启动路径(比如C:\Program Files\MATLAB\R2017a\bin\matlab.exe),启动MATLAB后再运行mex setup。这种方式下MATLAB会继承VS的完整环境变量,大概率能识别到编译器。手动指定mex配置文件
找到MATLAB安装目录下的bin\win64\mexopts文件夹,里面应该有针对VS2017的配置文件(比如msvc2017.xml)。如果文件不存在或损坏,你可以直接运行命令手动指定:mex -setup:C:\Program Files\MATLAB\R2017a\bin\win64\mexopts\msvc2017.xml C++注意路径要根据你的MATLAB安装位置调整,若提示权限问题,右键以管理员身份启动MATLAB再尝试。
检查VS的C++组件是否完整
即便你说已经装了C组件,也建议再确认:VS Installer里的“使用C的桌面开发”是否勾选了所有关键子项,比如“MSVC v141 - VS 2017 C++ x64/x86生成工具(v14.16)”、“Windows 10 SDK(14393版本)”以及“C++ ATL(x86和x64)”,缺了任何一个都可能导致识别失败。
如果以上方法都不行,你可以试试卸载VS2017后重新安装,安装时直接选择“使用C++的桌面开发”默认配置,确保所有依赖都装全,再重新配置mex。
内容的提问来源于stack exchange,提问作者Leo

