【Matlab】Matlab2016a-mex出错-解决方法

来源:互联网 发布:日本房产中介 知乎 编辑:程序博客网 时间:2024/06/06 14:10

配置:win10+64位+matlab16a+VS15
最近在win10系统下,装好了matlab2016和vs2015,由于工作需要对matlab2016进行mex。本以为装好了vs2015,mex的过程应该会很顺利,但是没想到却提示未找到支持的编译器或SDK,如下所示:
这里写图片描述
在网上搜索了一些解决方法,大多数说是安装提示中说的MinGW-w64 编译器就可以了,毕竟只是matlab找不到编译器而已,也没有指定一定要用vs2015来进行编译。但是鉴于已经安装过vs2015了,就不太想安装别的编译器了。于是决定开始找找原因,到底为什么matlab识别不了vs2015。

  • 在matlab中输入以下命令,就可以检查matlab进行mex的过程。
mex -setup -v
  • 在vs2015部分的检查结果如下所示:
... 正在查找编译器 'Microsoft Visual C++ 2015 Professional (C)'...... 正在查找注册表设置 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0...否。... 正在查找注册表设置 'HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0...否。... 正在查找注册表设置 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' 14.0...是('D:\ProgramFiles\Microsoft Visual Studio 14.0\')。... 正在查找文件 'D:\ProgramFiles\Microsoft Visual Studio 14.0\VC\bin\amd64\cl.exe'...否。找不到已安装的编译器 'Microsoft Visual C++ 2015 Professional (C)'。
  • 和正确编译的结果对比以下可以发现,找不到文件 ‘D:\ProgramFiles\Microsoft Visual Studio 14.0\VC\bin\amd64\cl.exe’,所以系统提示找不到安装好的vs2015编译器。修正。。。
... 正在查找编译器 'Microsoft Visual C++ 2015 Professional (C)'...... 正在查找注册表设置 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0...否。... 正在查找注册表设置 'HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0...否。... 正在查找注册表设置 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' 14.0...是('D:\ProgramFiles\Microsoft Visual Studio 14.0\')。... 正在查找文件 'D:\ProgramFiles\Microsoft Visual Studio 14.0\VC\bin\amd64\cl.exe'...是。... 正在查找文件夹 'D:\ProgramFiles\Microsoft Visual Studio 14.0\VC'...是。... 正在查找注册表设置 'HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.1' InstallationFolder...否。... 正在查找注册表设置 'HKCU\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.1' InstallationFolder...否。... 正在查找注册表设置 'HKLM\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.1' InstallationFolder...否。... 正在查找注册表设置 'HKCU\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.1' InstallationFolder...否。找不到已安装的编译器 'Microsoft Visual C++ 2015 Professional (C)'。
  • 继续检查,发现提示没有安装SDK 8.1版本。安装。。。
... 正在查找编译器 'Microsoft Visual C++ 2015 Professional (C)'...... 正在查找注册表设置 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0...否。... 正在查找注册表设置 'HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0...否。... 正在查找注册表设置 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' 14.0...是('D:\ProgramFiles\Microsoft Visual Studio 14.0\')。... 正在查找文件 'D:\ProgramFiles\Microsoft Visual Studio 14.0\VC\bin\amd64\cl.exe'...是。... 正在查找文件夹 'D:\ProgramFiles\Microsoft Visual Studio 14.0\VC'...是。... 正在查找注册表设置 'HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.1' InstallationFolder...否。... 正在查找注册表设置 'HKCU\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.1' InstallationFolder...否。... 正在查找注册表设置 'HKLM\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.1' InstallationFolder...是('C:\Program Files (x86)\Windows Kits\8.1\')。... 正在查找注册表设置 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0...否。... 正在查找注册表设置 'HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0...否。... 正在查找注册表设置 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' 14.0...是('D:\ProgramFiles\Microsoft Visual Studio 14.0\')。... 正在查找注册表设置 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VC7' 14.0...否。... 正在查找注册表设置 'HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VC7' 14.0...否。... 正在查找注册表设置 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7' 14.0...是('D:\ProgramFiles\Microsoft Visual Studio 14.0\VC\')。... 正在查找环境变量 'VS140COMNTOOLS'...是('D:\ProgramFiles\Microsoft Visual Studio 14.0\Common7\Tools\')。... 正在查找文件 'D:\ProgramFiles\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe'...是。... 正在查找注册表设置 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0...否。... 正在查找注册表设置 'HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0...否。... 正在查找注册表设置 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' 14.0...是('D:\ProgramFiles\Microsoft Visual Studio 14.0\')。... 正在查找文件 'D:\ProgramFiles\Microsoft Visual Studio 14.0\VC\vcvarsall.bat'...否。找不到已安装的编译器 'Microsoft Visual C++ 2015 Professional (C)'。
  • VC目录下没有vcvarsall.bat文件。修正。。。
    检查到这里,感觉是自己VC貌似没有装好,缺失了很多文件。
... 正在查找编译器 'Microsoft Visual C++ 2015 Professional (C)'...... 正在查找注册表设置 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0...否。... 正在查找注册表设置 'HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0...否。... 正在查找注册表设置 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' 14.0...是('D:\ProgramFiles\Microsoft Visual Studio 14.0\')。... 正在查找文件 'D:\ProgramFiles\Microsoft Visual Studio 14.0\VC\bin\amd64\cl.exe'...是。... 正在查找文件夹 'D:\ProgramFiles\Microsoft Visual Studio 14.0\VC'...是。... 正在查找注册表设置 'HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.1' InstallationFolder...否。... 正在查找注册表设置 'HKCU\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.1' InstallationFolder...否。... 正在查找注册表设置 'HKLM\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.1' InstallationFolder...是('C:\Program Files (x86)\Windows Kits\8.1\')。... 正在查找注册表设置 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0...否。... 正在查找注册表设置 'HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0...否。... 正在查找注册表设置 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' 14.0...是('D:\ProgramFiles\Microsoft Visual Studio 14.0\')。... 正在查找注册表设置 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VC7' 14.0...否。... 正在查找注册表设置 'HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VC7' 14.0...否。... 正在查找注册表设置 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7' 14.0...是('D:\ProgramFiles\Microsoft Visual Studio 14.0\VC\')。... 正在查找环境变量 'VS140COMNTOOLS'...是('D:\ProgramFiles\Microsoft Visual Studio 14.0\Common7\Tools\')。... 正在查找文件 'D:\ProgramFiles\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe'...是。... 正在查找注册表设置 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0...否。... 正在查找注册表设置 'HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0...否。... 正在查找注册表设置 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' 14.0...是('D:\ProgramFiles\Microsoft Visual Studio 14.0\')。... 正在查找文件 'D:\ProgramFiles\Microsoft Visual Studio 14.0\VC\vcvarsall.bat'...是。... 正在查找文件夹 'D:\ProgramFiles\Microsoft Visual Studio 14.0\VC'...是。... 正在查找注册表设置 'HKLM\SOFTWARE\Microsoft\Windows Kits\Installed Roots' KitsRoot10...否。... 正在查找注册表设置 'HKCU\SOFTWARE\Microsoft\Windows Kits\Installed Roots' KitsRoot10...否。... 正在查找注册表设置 'HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows Kits\Installed Roots' KitsRoot10...否。... 正在查找注册表设置 'HKCU\SOFTWARE\Wow6432Node\Microsoft\Windows Kits\Installed Roots' KitsRoot10...否。找不到已安装的编译器 'Microsoft Visual C++ 2015 Professional (C)'。
  • 提示没有安装SDK 10版本。安装。。。
... 正在查找编译器 'Microsoft Visual C++ 2015 Professional (C)'...... 正在查找注册表设置 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0...否。... 正在查找注册表设置 'HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0...否。... 正在查找注册表设置 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' 14.0...是('D:\ProgramFiles\Microsoft Visual Studio 14.0\')。... 正在查找文件 'D:\ProgramFiles\Microsoft Visual Studio 14.0\VC\bin\amd64\cl.exe'...是。... 正在查找文件夹 'D:\ProgramFiles\Microsoft Visual Studio 14.0\VC'...是。... 正在查找注册表设置 'HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.1' InstallationFolder...否。... 正在查找注册表设置 'HKCU\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.1' InstallationFolder...否。... 正在查找注册表设置 'HKLM\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.1' InstallationFolder...是('C:\Program Files (x86)\Windows Kits\8.1\')。... 正在查找注册表设置 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0...否。... 正在查找注册表设置 'HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0...否。... 正在查找注册表设置 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' 14.0...是('D:\ProgramFiles\Microsoft Visual Studio 14.0\')。... 正在查找注册表设置 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VC7' 14.0...否。... 正在查找注册表设置 'HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VC7' 14.0...否。... 正在查找注册表设置 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7' 14.0...是('D:\ProgramFiles\Microsoft Visual Studio 14.0\VC\')。... 正在查找环境变量 'VS140COMNTOOLS'...是('D:\ProgramFiles\Microsoft Visual Studio 14.0\Common7\Tools\')。... 正在查找文件 'D:\ProgramFiles\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe'...是。... 正在查找注册表设置 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0...否。... 正在查找注册表设置 'HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 14.0...否。... 正在查找注册表设置 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' 14.0...是('D:\ProgramFiles\Microsoft Visual Studio 14.0\')。... 正在查找文件 'D:\ProgramFiles\Microsoft Visual Studio 14.0\VC\vcvarsall.bat'...是。... 正在查找文件夹 'D:\ProgramFiles\Microsoft Visual Studio 14.0\VC'...是。... 正在查找注册表设置 'HKLM\SOFTWARE\Microsoft\Windows Kits\Installed Roots' KitsRoot10...是('C:\Program Files (x86)\Windows Kits\10\')。找到已安装的编译器 'Microsoft Visual C++ 2015 Professional (C)'。

在各种查缺补漏后,matlab终于和VS2015相认了。

此时再输入mex命令,就可以成功编译了。
这里写图片描述


UPDATE

记录下后续接着折腾的过程。

  • 上面虽然已经成功让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。

至此,win10下的matlab2016a+VS2015算是成功编译了。

  • 就自己的经验,正常安装好matlab和VS的话,一般mex -setup都是很顺利的。
  • 如果出错了就用mex -setup -v命令看看matlab在查找编译器的时候是VS的什么文件没有找到,进行相应的查缺补漏。
  • 如果还是不行的话,重装matlab或者VS应该就可以解决问题了。
原创粉丝点击