好多人遇到,在matlab中运行mex -setup
提示 mex未找到支持的编译器或 sdk,这篇文章也许会帮你解决其他大多数文章没有提及的问题,也是最致命,最难搞的问题
问题根源
安装路径问题导致的错误,而且matlab不能自动识别路径变化
我安装的matlab,vs2019没有在默认路径,而且我matlab在d盘,而我的vs2019在e盘
先说一下我的情况,先装的matlab 2014b,后来装的vs2019

但是,当我在matlab中运行 mex -setup命令时,出现这个报错。

我在网上看了好多解决方案,发现还是解决不了问题。很苦恼,于是我卸载重新装了一个matlab2018b,本以为这样总行了吧。然而!!!还是不行。
2018b这次换报错提示了,它提示我安装mingw-w64 c/c++ 编译器,但是我装了vs2019,倔强的我就不想再装一个编译器。
进入正题:
环境:win10,matlab2018b,vs2019
理论上,我这个解决方案,所有版本适用
一、先进入文件夹
d:\matlab\r2018b\bin\win64\mexopts(根据你自己选择的matlab安装路径去找)
看有没有你的vs版本,我的是vs2019,所以我把2019的xml文件放进去

如果有你的vs版本就不用管,没有可以下载我这里的文件,里面有这些版本的

放进去后,你可以打开matlab再试一下mex -setup命令。如果不行,请继续看下一步
二、在matlab命令行中运行mex -setup -v
由于当时没有截图,这张图vs2019部分就别看了,可以看到,后面都是否,找不到。

进入排查阶段,进入注册表,键盘按下“win+r”,输入“regedit”打开注册表,挨个找。
以第一条为例,“hklm”表示注册表中的:hkey_local_machine;“hkcu”表示注册表中的:hkey_current_user。
在注册表内找到 ”hklm\software\microsoft\visualstudio\sxs\vs7,没有就在相
应目录下创建对应项,如图,我本身没有这些路径,是我自己添加的。

同样的方法,打开注册表“hkcu\software\microsoft\visualstudio\sxs\vs7 ” 项下的 “16.0”字符串,将“ visual studio”安装目录内的 ” vc”文件目录的地址赋值给它。

再次运行mex -setup -v,如果出现下图,说明注册表解决了,但是有个路径问题还是没有解决。

打开d:\matlab\r2018b\bin\win64\mexopts的msvc2019.xml,msvcpp2019.xml(根据你们自己的vs版本选择)两个文件,找到两个地方,对比自己的vs安装路径


可以发现路径有区别,只需要把vs的安装路径复制过来替换掉就行,注意一个文件下有两处这样的地方。两个文件都要修改。
三、再打开d:\matlab\r2018b\bin\win64\mexopts\compilercomponents
打开下图文件,修改路径为自己的vs安装路径

再运行mex -setup -v命令,这下你就可以看到这个界面了。

总结
由于是事后写的,有的步骤可能残缺或者不清晰的地方,还请大家谅解!
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论