解决matlab错误使用 mex 未找到支持的编译器或 SDK一系列问题

在Matlab中使用mex可以编译c/c++ ,但是首先要设置好编译器,可以使用mex -setup命令来设置。但在命令行中输入mex -setup时,报错:(错误使用 mex 未找到支持的编译器或 SDK。您可以安装免费提供的 MinGW-w64 C/C++ 编译器;请参阅安装 MinGW-w64 编译
器。有关更多选项,请访问 http://www.mathworks.com/support/compilers/R2016a/win64.html。)

按照提示的可以下载MinGW-w64 C/C++,下载后进行安装。但是若是我们已经安装了VS,则可以用下面的方法。

由于Matlab从2016版本以后使用xml文件来保存配置文件,所以如果使用的Matlab是2016以前的版本,方法可能和本文有所区别。(本文以Matlab2016a和Visual Studio2017为例)我已经安装了VS2017版本,但是我是先安装的matlab后安装的Visual Studio,或者其它一些原因,mex -setup命令无法找到安装好的Visual Studio编译器,仍然报同样的错误,那么就需要进行一些修改才能成功设置编译器了。
在Matlab的安装目录\bin\win64\mexopts(比如我的:E:\Matlab2016a\bin\win64\mexopts)目录中有各种编译器的配置文件,Matlab就是依靠这些xml文件和编译器建立关联,打开文件,查看你的matlab支持的VS版本是否包含你安装的VS版本。

你的错误可能是matlab 根本就找不到VS,原因就是matlab根本就不支持VS20xx(比如matlab2016a支持的最高版本就到2015,如下图,红框的部分是我在网上下载的支持文件。)
在这里插入图片描述
下载mexopts补丁文件 : https://kaba.hilvi.org/homepage/blog/blog.htm
在这里插入图片描述
选择对应版本
在这里插入图片描述
下载后解压放在目录中(Matlab的安装目录\bin\win64\mexopts),运行mex -setup,配置你的VS编译器。
一般来说到这里就解决了。感谢博客(https://blog.csdn.net/qq_17783559/article/details/82017379?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf)

但是我的问题有点复杂,因为这时,又报错:e:\matlab2016a\extern\include\matrix.h(23): fatal error C1083: 无法打开包括文件: “stdlib.h”: No such file or directory
我的内心是崩溃的,然后各种查问题,尝试解决。最后得出的结论就是SDK的版本问题。打开Visual Studio Installer,查看VS使用的SDK,就是红框框的圈住的。然而matlab安装目录\bin\win64\mexopts目录下的msvcpp2017.xml使用的WinKit居然写死了include的引用路径为$KITSROOT\include\10.0.16299.0\ucrt,但这个不存在的路径在使用mex -setup设置期间是不报错的,导致在实际的编译过程中,出现找不到“stdlib.h”的错误。
在这里插入图片描述
要修复以上的错误,需要两个步骤:

  1. 修改 bin\win64\mexopts目录下的msvc2017.xml,将其中10.0.16299.0替换成有效的10.0.17763.0(这里是我的配置,你要看自己对应的版本)
  2. Matlab2016a在第一次使用mex -setup设置成功(虽然实际是存在错误的)后,会将mex编译器配置保存到C:\Users\Administrator\AppData\Roaming\MathWorks\MATLAB\R2017a下的mex_C_win64.xml中,因此只做第一步是无效的,需要将该xml文件也修改了
    然后,就大功告成啦,终于解决了,希望也能帮助到你们。
    提示:c++编译器若存在通用问题也是按照以上方法修改。
  • 9
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 您好,这是一个关于使用 mex 命令时出现错误的提示。提示指出未找到支持编译器,建议您安装免费提供的 mingw-w64 c/c++ 编译器,并参考安装指南。如果您需要更多选项,请访问 https://www.mathworks.com/support/compilers。 ### 回答2: 当在 MATLAB 使用 mex 命令编译 MEX 文件时,有时会出现“未找到支持编译器”的错误消息。这通常是因为未正确安装支持编译器或没有将其配置为 MATLAB 的默认编译器。 为了解决这个问题MATLAB 建议安装免费提供的 mingw-w64 c/c 编译器。 Mingw-w64 是一个 Windows 下的 GCC 工具集,它可以用来编译 C 和 C++ 语言的程序。在安装 mingw-w64 之前,你需要查看使用MATLAB 版本和操作系统,并下载与其对应的 mingw-w64 版本。 安装 mingw-w64 编译器需要按照官方 MATLAB 文档提供的步骤进行配置。其,在安装过程还需要将 mingw-w64 添加到 MATLAB 的默认编译器列表。这样在使用 mex 命令时,MATLAB 将优先使用 mingw-w64 编译器进行编译操作。 如果您不想使用 mingw-w64 编译器,还可以考虑安装其他支持编译 C/C++ 的编译器。在 https://www.mathworks.com/support/compilers 网站上,MATLAB 提供了一些选项,可以选择您需要使用编译器。 这些编译器不仅包括免费的 mingw-w64,还包括一些商业的编译器,如 Intel 和 Microsoft Visual C++。 总之,在使用 mex 命令时,如果出现“未找到支持编译器”的错误,应该首先检查所使用MATLAB 版本和操作系统,然后安装相应的编译器。如果不确定应该安装哪种编译器,建议查看 MATLAB 官方文档或与 MATLAB 支持团队联系,以获得更详细的帮助和指导。 ### 回答3: 在 MATLAB mex 是用于将 C 或 C++ 代码编译MEX 文件的命令。但是在运行 mex 命令时,有时会出现错误提示“错误使用 mex 未找到支持编译器”。出现这种情况的主要原因是系统缺少支持编译器解决这个问题的方法是安装 Mingw-w64 C/C++ 编译器。Mingw-w64 是一个开源的、免费的、跨平台的 C/C++ 编译器,用于在 Windows 上开发和构建 C/C++ 应用程序。Mingw-w64 支持多种平台和不同架构的编译器,可用于创建各种类型的应用程序,包括 MEX 文件。 安装 Mingw-w64 编译器非常简单,只需要从该项目的官方网站下载安装程序,并按照提示进行安装。安装完成后,需要将编译器添加到 MATLAB 的环境变量,以便 MATLAB 能够找到 Mingw-w64 编译器。要添加环境变量,可以打开 MATLAB 的“设置”窗口,选择“选项”,然后选择“环境”菜单,单击“添加”按钮,将 Mingw-w64 的文件夹路径添加到 MATLAB 的环境变量。 如果您希望了解更多有关可用的编译器和选择编译器问题,请访问 MathWorks 的官方支持页面。在该页面,您可以找到有关如何选择编译器、如何安装编译器以及如何解决常见编译器问题的详细信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值