如何让MatLab找到Visual C++编译器?

drm*_*elr 6 c++ matlab mex visual-studio

序言:我在写这篇文章的过程中找到了一个解决方案,这个问题是一个PITA并且有一个复杂的解决方案.因此,我觉得有必要离开这里帮助任何有这个问题的穷人.


我是MatLab的新手,我通常也不使用Visual C++,所以请原谅我,如果这应该是非常明显的.

简短版本:我的计算机上安装了Visual C++ 2013,但mex在运行时找不到它mex -setup c++.我得到以下内容:

>>mex -setup cxx

使用mex时出错

未找到支持的编译器或SDK.您可以安装免费的MinGW-w64 C/C++编译器; 请参阅安装MinGW-w64编译器.有关更多选项,请 访问http://www.mathworks.com/support/compilers/R2015b/win64.html.


这是完整的情况.

  • 操作系统:Windows 10 Home
  • 编译器:Visual Studio 2013(v120,最新版)
    • 我确认我可以使用此工具集编译和运行程序.
  • MatLab版本:2015b

我最初运行Visual Studio 2015,而mex发现编译器就好了.但是,我很快发现Simulink与VS 2015不兼容,所以我不得不回滚到VS 2013,这就是我的问题开始的时候.

我和其他许多人一起试过以下网站来寻找解决方案:

然后我走了一个兔子洞.

  1. 一个非常旷日持久的mathworks.com回答,提示其他链接.这导致我......

  2. 另一个mathworks.com回答听起来像我的问题,并建议修补我的设置.事实证明我没有安装SDK 7.1.所以,我去安装,并得到这个错误:

    某些组件无法安装.某些Windows SDK组件需要RTM .NET Framework 4 ...

  3. 这个Stack Overflow问题询问了这个问题,我遇到了与DaniloGadêlha已经安装的.NET Framework 相同的问题.

    我尝试了最佳答案,并删除了我能找到的任何版本的.NET框架的每一个引用,包括"Windows功能"下的那些,我仍然无法安装.

    我尝试了下一个选项,即使在安全模式下,RegEdit也不会让我更改下一个答案建议的值,所以这是一个破产.

    最后,我尝试了MandM的解决方案,最终解决了我的问题链.

drm*_*elr 4

我认为这是问题的根源:当我卸载 Visual Studio 2015 并安装 Visual Studio 2013 时,安装或注册表设置处于不正确的状态,因此 mex 无法找到 Visual Studio 2013。

\n\n

对我有用的解决方案:

\n\n
    \n
  1. 保留 Visual Studio 2013 的安装状态。
  2. \n
  3. 正如 MandM 所回答的

    \n\n
    \n

    卸载以下内容:

    \n\n
      \n
    • “Microsoft Visual C++ 2010 x64 可再发行组件”
    • \n
    • “Microsoft Visual C++ 2010 x86 可再发行组件”
    • \n
    \n\n

    在安装 Windows 7.1 SDK 之前,安装包会在安装过程中重新安装这两个。

    \n
    \n\n

    饰演Robert Va\xc5\xbean在评论中指出的那样:

    \n\n
    \n

    如果尽管采取了此解决方法,错误消息仍然存在,只需单击“确定”并继续安装。这次就安装成功了..

    \n
    \n\n

    我确实遇到了这个错误,但安装工作正常。

  4. \n
  5. 安装SDK 7.1 补丁,它修复了mathworks.com 答案中突出显示的问题
  6. \n
\n