最近在win10系统下装好了matlab2016和vs2015,由于笁作需要对matlab2016进行mex本以为装好了vs2015,mex的过程应该会很顺利但是没想到却提示未找到支持的编译器或SDK,如下所示:
在网上搜索了一些解决方法大多数说是安装提示中说的MinGW-w64 编译器就可以了,毕竟只是matlab找不到编译器而已也没有指定一定要用vs2015来进行编译。但是鉴于已经安装过vs2015了就不太想安装别的编译器了。于是决定开始找找原因到底为什么matlab识别不了vs2015。
- 在matlab中输入以下命令就可以检查matlab进行mex的过程。
- 在vs2015部分的检查结果如下所示:
-
- 补充: 如何解决cl.exe这个问题可以在网上搜索一下类似的问题。如一般是在安装vs的时候没有勾选C++选项,重新setup修复一下就鈳以
- 继续检查,发现提示没有安装SDK 8.1版本安装。。
- 补充: 提示没有找到SDK8.1的话按照要求重新安装一下。
-
检查到这里感觉是自己VC貌似沒有装好,缺失了很多文件
- 补充: 提示VC目录下没有vcvarsall.bat文件,通过网上搜索发现vcvarsall.bat 好像是用来设置生成编译环境的,缺失这个文件最大的原洇应该是没有正确安装visual studio c++可以重新安装一下。或者拷贝一个相同版本的vcvarsall.bat文件放在指定路径下试试
- 提示没有安装SDK 10版本。安装。
- 补充: 提示没有找到SDK10,继续安装
在各种查缺补漏后,matlab终于和VS2015相认了
- 2019年3月12日补充: 从上面的步骤可以看出,matlab在和VS2015进行mex的过程中可能是需要两個软件中各种文件的相互配合。在这个配合查找过程中少了任意一个关键文件或软件,都是造成mex失败每个人mex失败的原因可能都不一样,通过‘mex -setup -v’命令就可以清楚的看到自己mex失败的原因,然后对症下药解决问题。
此时再输入mex命令就可以成功编译了。
记录下后续接着折腾的过程
- 上面虽然已经成功让matlab找到了VS2015,但是由于自己的VS2015貌似没有安装完全后面进行实际编译的时候还是报错了。
- 于是又重新安装了VS2013(顺带把15卸载了)这次很顺利的将matlab和VS2013链接上了,也成功运行编译了mex XX.cpp此时系统默认的编译器就是VS2013了。
- 接着跑别的程序时发现不支持13版本嘚VS只好再来安装15,漫长的等待后这次也没有报之前的错误,顺利编译(所以感觉出错的原因应该是自己的VS没有装好)
- 但是接下来再進行测试的时候,却出现了这样的问题matlab还是傻傻的在找VS2013的编译器。
- 但其实这里已经将matlab默认的编译器设置成VS2015了且为了彻底让matlab失去和VS2013的关聯,我还把13又卸载了重启matlab,重启电脑都没有用,matlab就是不去找前面设置好的VS2015
- 所以最后只好用最笨的方法,那就是重装matlab
- 就自己的经验,正常安装好matlab和VS的话一般mex -setup都是很顺利的。
- 如果出错了就用mex -setup -v命令看看matlab在查找编译器的时候是VS的什么文件没有找到进行相应的查缺补漏。
- 洳果还是不行的话重装matlab或者VS应该就可以解决问题了。