Matlab 找不到编译器问题,版本通用方法

好多人遇到,在matlab中运行mex -setup
提示 mex未找到支持的编译器或 SDK,这篇文章也许会帮你解决其他大多数文章没有提及的问题,也是最致命,最难搞的问题

问题根源安装路径问题导致的错误,而且MATLAB不能自动识别路径变化

我安装的matlab,VS2019没有在默认路径,而且我MATLAB在D盘,而我的VS2019在E盘

先说一下我的情况,先装的matlab 2014b,后来装的VS2019

但是,当我在matlab中运行 mex -setup命令时,出现这个报错。

我在网上看了好多解决方案,发现还是解决不了问题。很苦恼,于是我卸载重新装了一个matlab2018b,本以为这样总行了吧。然而!!!还是不行,吐血了。2018b这次换报错提示了,它提示我安装MinGW-w64 C/C++ 编译器,但是我装了VS2019,倔强的我就不想再装一个编译器。

进入正题

环境:win10,matlab2018b,VS2019

理论上,我这个解决方案,所有版本适用

一、

  1. 先进入文件夹,D:\MATLAB\R2018b\bin\win64\mexopts(根据你自己选择的MATLAB安装路径去找)
  2. 看有没有你的VS版本,我的是VS2019,所以我把2019的xml文件放进去

如果有你的VS版本就不用管,没有可以下载我这里的文件,里面有这些版本的https://download.csdn.net/download/no_say_you_know/12119043

放进去后,你可以打开MATLAB再试一下mex -setup命令。如果不行,请继续看下一步

二、

  1. 在MATLAB命令行中运行mex -setup -v,由于当时没有截图,这张图VS2019部分就别看了,可以看到,后面都是否,找不到。
  2. 进入排查阶段,进入注册表,键盘按下“win+r”,输入“regedit”打开注册表,挨个找。
  3. 以第一条为例,“HKLM”表示注册表中的:HKEY_LOCAL_MACHINE;“HKCU”表示注册表中的:HKEY_CURRENT_USER。在注册表内找到 ”HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7,没有就在相
    应目录下创建对应项,如图,我本身没有这些路径,是我自己添加的。
  4. 同样的方法,打开注册表“HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VS7 ” 项下的 “16.0”字符串,将“ Visual Studio”安装目录内的 ” VC”文件目录的地址赋值给它。
  5. 再次运行mex -setup -v,如果出现下图,说明注册表解决了,但是有个路径问题还是没有解决。
  6. 打开D:\MATLAB\R2018b\bin\win64\mexopts的msvc2019.xml,msvcpp2019.xml(根据你们自己的vs版本选择)两个文件,找到两个地方,对比自己的VS安装路径

 

可以发现路径有区别,只需要把VS的安装路径复制过来替换掉就行,注意一个文件下有两处这样的地方。两个文件都要修改。

三、

  1. 再打开D:\MATLAB\R2018b\bin\win64\mexopts\compilerComponents,打开下图文件,修改路径为自己的VS安装路径
  2.  再运行mex -setup -v命令,这下你就可以看到这个界面了。

由于是事后写的,有的步骤可能残缺或者不清晰的地方,还请大家谅解!

  • 21
    点赞
  • 144
    收藏
    觉得还不错? 一键收藏
  • 25
    评论
matlab2012b windows版在关联vs2012编译器的时候,以及无法编译dll。 原因就是matlab默认的编译器的目录配置,include目录以及lib目录配置错误造成的。 如果你的vs目录不是默认的,或者windows是32位版本,或者vs版本不是2012,或者你的mt.exe目录不在Windows kits下,那么有可能需要修改附件里面的相关目录的设置(其实就是mbuild配置cl.exe和mt.exe的目录位置,以及mex配置的include和lib的所需目录),mbuild是编译exe的,mex是编译dll的。我的另一个资源仅处理mbuild配置,未处理mex的配置,所以不能成功编译mex。如果你已经下载过我的另一个资源,请替换mexopts目录下的msvc110opts.bat文件的30和31行代码(而不必下载这个资源): set INCLUDE=%VCINSTALLDIR%\INCLUDE;%VCINSTALLDIR%\ATLMFC\INCLUDE;%LINKERDIR%\include\um;%LINKERDIR%\include\shared;%LINKERDIR%\include\WinRT;%INCLUDE% set LIB=%VCINSTALLDIR%\LIB\amd64;%VCINSTALLDIR%\ATLMFC\LIB\amd64;%LINKERDIR%\lib\win8\um\x64;%MATLAB%\extern\lib\win64;%LIB% 附件里有一个word文件,是我修改的注释信息,如果需要手动修改,可以当做帮助来用. mbuild设置方法: 1 把附件相关的4个文件添加到matlab/bin/win64下面的2个相关目录 2 在matlab 里面运行 mbuild -setup, 然后选 y, 再选择2012的那个项目,再选y 3 mbuild应该成功了,此时可以编译为exe文件。 mex设置方法: 1 在matlab 里面运行 mex -setup, 然后选 y, 再选择2012的那个项目,再选y 2 mbuild应该成功了,此时可以编译为dll文件。
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值