我怎样才能让 MatLab 找到 Visual C++ 编译器

How can I get MatLab to find the Visual C++ Compiler?

本文关键字:找到 Visual C++ 编译器 MatLab      更新时间:2023-10-16

序言:我在写这篇文章的过程中找到了一个解决方案,这个问题是一个PITA,并且有一个复杂的解决方案。因此,我覺得有必要把這個留在這裡,去幫助任何有這個問題的可憐的靈魂。


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

简短版本:我的计算机上安装了Visual C++ 2013,但是当我运行mex -setup c++时,mex找不到它。我得到以下信息:

>>mex -setup cxx

使用 mex 时出错

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


以下是完整情况。

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

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

我尝试了以下网站来寻找解决方案:

  • MatLab mex 文档 - 没有帮助,只显示基本的mex用法。
  • MatLab 支持的编译器列表 - 确认 VC++ 2013 是兼容的。

然后我掉进了一个兔子洞。

  1. 一个非常漫长的 mathworks.com 答案,暗示了其他链接。这导致我...

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

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

  3. 这个Stack Overflow问题询问了这个问题,我遇到了Danilo Gadêlha关于已经安装的.NET Framework的完全相同的问题。

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

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

    最后,我尝试了MandM的解决方案,它最终解决了我的一系列问题。

我认为这是我问题的根源:当我卸载Visual Studio 2015并安装Visual Studio 2013

时,安装或注册表设置处于不正确的状态,因此mex无法找到Visual Studio 2013。

对我有用的解决方案:

  1. 保持 Visual Studio 2013 安装状态。
  2. 正如曼德姆回答的那样:

    卸载以下内容:

    • "Microsoft Visual C++ 2010 x64 可再发行组件"
    • "Microsoft Visual C++ 2010 x86 可再发行组件"

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

    正如Robert Važan在评论中指出的那样:

    如果尽管有此解决方法,错误消息仍然存在,只需单击"确定"并继续安装。这次安装将成功。.

    我确实收到此错误,但安装工作正常。

  3. 安装 SDK 7.1 修补程序,该修补程序可修复此 mathworks.com 答案中突出显示的问题。