Matlab无法识别vs编译器

下面的文章内容,将以解决matlab无法识别vs编译器的问题,我这里的版本是matlab2022a,vs2019,原因是需要将matlab和c++混编时出现找不到编译器,所以需要解决并做了大量的尝试。共耗时五天才真正解决了问题。
其实,一般新系统安装matlab和vs后,一般都不会有问题,一般都是重装过matlab或者vs后才会出现这种莫名奇妙的问题。
这里不解决低版本的matlab识别高版本的vs编译器,比如matlab2016识别vs2017这样的问题。
好了,进入正题…

1、确定一下您的问题:错误使用Mex

2、再执行以下命令:

如果您的结果跟我一样,那么可以继续看,如果不一样,就可能不是同一个问题。
下面直接说解决方案:
3、打开powershell,执行下面命令
install-module -scope currentuser MSI

install-module -scope currentuser MSI

按照提示输入Y

4、继续执行命令
get-msirelatedproductinfo ‘{1571205C-BAD1-4237-BFE6-B77E622C51DB}’

get-msirelatedproductinfo '{1571205C-BAD1-4237-BFE6-B77E622C51DB}'

很有可能该命令会出错
该错误是因为禁用了脚本执行的权限,需要再执行允许执行脚本权限即可

5、出现上面错误时执行命令,否则跳过
set-ExecutionPolicy RemoteSigned

set-ExecutionPolicy RemoteSigned

这时,再执行上面的命令就可以正常执行了。

6、继续执行命令
get-msirelatedproductinfo ‘{1571205C-BAD1-4237-BFE6-B77E622C51DB}’ | repair-msiproduct

get-msirelatedproductinfo '{1571205C-BAD1-4237-BFE6-B77E622C51DB}' | repair-msiproduct

执行该命令很有可能还会出错

该错误是因为set configuration出错,
解决方案:下载一个最新的Microsoft.VisualStudio.Setup.Configuration.msi安装就可以了。
或者从vs2019安装文件中搜索“Microsoft.VisualStudio.Setup.Configuration.msi”,并安装就好了。
安装完后,再执行一次出错的命令就会正常了。

7、至此,问题已经解决,测试命令
vswhere.exe
如果输出仍然是第2步的结果,则说明未解决,如果输出如下,则ok

因为该问题,我已经测试了很多种方法,网上基本上就是修改注册表,清理注册表,重装matlab,重装vs都试过了,全都无效,就差重装系统了。也不是安装先后的问题,差点就要放弃了。也测试了TotalUninstaller.zip工具卸载,无效。该问题困扰多天,希望能够帮助后来人不要受到该问题困扰。

====================================================================
下面是第二种解决方案,可以参考
其实修改注册表的办法不是没有效,只是需要根据xml文件内容来更改,如果您的xml文件与我的一样,那么可以尝试通过注册表解决

msvc2019.xml

<?xml version="1.0" encoding="UTF-8" ?>
<configName="Microsoft Visual C++ 2019 (C)"ShortName="MSVC160"Manufacturer="Microsoft"Version="16.0"Language="C"Priority="A"Location="$VCROOT\" ><DetailsCompilerExecutable="$COMPILER"CompilerDefines="$COMPDEFINES"CompilerFlags="$COMPFLAGS"OptimizationFlags="$OPTIMFLAGS"DebugFlags="$DEBUGFLAGS"IncludeFlags="$INCLUDE"LinkerExecutable="$LINKER"LinkerFlags="$LINKFLAGS"LinkerLibraries="$LINKLIBS"LinkerDebugFlags="$LINKDEBUGFLAGS"LinkerOptimizationFlags="$LINKOPTIMFLAGS"CommandLineShell="$VCVARSALLDIR\VCVARSALL.BAT "CommandLineShellArg="amd64"CompilerDefineFormatter="/D%s"LinkerLibrarySwitchFormatter="lib%s.lib;%s.lib"LinkerPathFormatter="/LIBPATH:%s"LibrarySearchPath="$$LIB;$$LIBPATH;$$PATH;$$INCLUDE;$MATLABROOT\extern\lib\$ARCH\microsoft"/><!-- Switch guide: http://msdn.microsoft.com/en-us/library/fwkeyyhe(v=vs.71).aspx --><varsCMDLINE100="$COMPILER /c $COMPFLAGS $OPTIM $COMPDEFINES $INCLUDE $SRC /Fo$OBJ"CMDLINE200="$LINKER $LINKFLAGS $LINKTYPE $LINKOPTIM $LINKEXPORTVER $OBJS $LINKLIBS /out:$EXE"CMDLINE250="mt -outputresource:$EXE;2 -manifest $MANIFEST"CMDLINE300="del $EXP $LIB $MANIFEST $ILK"COMPILER="cl"COMPFLAGS="/Zp8 /GR /W3 /EHs /nologo /MD"COMPDEFINES="/D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0  $MATLABMEX"MATLABMEX=" /DMATLAB_MEX_FILE"OPTIMFLAGS="/O2 /Oy- /DNDEBUG"INCLUDE="-I&quot;$MATLABROOT\extern\include&quot; -I&quot;$MATLABROOT\simulink\include&quot;"DEBUGFLAGS="/Z7"LINKER="link"LINKFLAGS="/nologo /manifest "LINKTYPE="/DLL"LINKEXPORT="/EXPORT:mexFunction"LINKEXPORTVER="/EXPORT:mexFunction /EXPORT:mexfilerequiredapiversion"LINKLIBS="/LIBPATH:&quot;$MATLABROOT\extern\lib\$ARCH\microsoft&quot; libmx.lib libmex.lib libmat.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"LINKDEBUGFLAGS="/debug /PDB:&quot;$TEMPNAME$LDEXT.pdb&quot;"LINKOPTIMFLAGS=""OBJEXT=".obj"LDEXT=".mexw64"SETENV="set COMPILER=$COMPILERset COMPFLAGS=/c $COMPFLAGS $COMPDEFINES $MATLABMEXset OPTIMFLAGS=$OPTIMFLAGSset DEBUGFLAGS=$DEBUGFLAGSset LINKER=$LINKERset LINKFLAGS=$LINKFLAGS /export:%ENTRYPOINT% $LINKTYPE $LINKLIBS $LINKEXPORTset LINKDEBUGFLAGS=/debug /PDB:&quot;%OUTDIR%%MEX_NAME%$LDEXT.pdb&quot;set NAME_OUTPUT=/out:&quot;%OUTDIR%%MEX_NAME%%MEX_EXT%&quot;"/><client><engineLINKLIBS="$LINKLIBS libeng.lib"LINKEXPORT=""LINKEXPORTVER=""LDEXT=".exe"LINKTYPE=""MATLABMEX=""/><mbuildCMDLINE100="$COMPILER /c $COMPFLAGS $OPTIM $COMPDEFINES $INCLUDE $SRC /Fo$OBJ"CMDLINE200="$LINKER $LINKFLAGS $LINKTYPE $LINKOPTIM $LINKEXPORT $OBJS $LINKLIBS /out:$EXE"CMDLINE250="$MTCMDLINE"CMDLINE300="del $MANIFEST &quot;$TEMPNAME.map&quot; "LINKFLAGS="/nologo /manifest"LINKLIBS="/MACHINE:AMD64 /LIBPATH:&quot;$MATLABROOT\extern\lib\$ARCH\microsoft&quot; mclmcrrt.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"INCLUDE="-I&quot;$MATLABROOT\extern\include&quot; -I&quot;$MATLABROOT\extern\include\$ARCH&quot;"COMPFLAGS="-MD -Zp8 -GR -W3 -EHsc- -Zc:wchar_t- -nologo"COMPDEFINES="/DMSVC /DIBMPC /D_CRT_SECURE_NO_DEPRECATE"OPTIMFLAGS="-O2 -DNDEBUG"LINKEXPORT=""LINKEXPORTVER=""LDEXT=".exe"MATLABMEX=""MTCMDLINE="mt -outputresource:$EXE;1 -manifest $MANIFEST"LINKTYPE=""LINKDEBUGFLAGS="/debug /PDB:&quot;$TEMPNAME.pdb&quot;"/><mbuild_comCMDLINE000="copy &quot;$MATLABROOT\extern\include\$ARCH\mwcomutil.tlb&quot; ."CMDLINE001="midl /nologo /$ARCH $COMPINCLUDE /D NDEBUG /out &quot;$OUTDIR&quot; mwcomtypes.idl"CMDLINE002="midl /nologo /$ARCH $COMPINCLUDE /D NDEBUG /out &quot;$OUTDIR&quot; &quot;$COMIDL&quot;"CMDLINE100="$COMPILER $COMPFLAGS $OPTIM $COMPDEFINES $INCLUDE $COMPINCLUDE $SRC /Fo$OBJ"CMDLINE150="rc /fo &quot;$RESFILE&quot; &quot;$RCFILE&quot;"CMDLINE250="mt -outputresource:$EXE;2 -manifest $MANIFEST"CMDLINE275="&quot;$MATLABROOT\runtime\$ARCH\mwregsvr.exe&quot; $EXE"CMDLINE300="del $MANIFEST mwcomutil.tlb &quot;$RESFILE&quot;"OUTDIR="."INCLUDE="$INCLUDE -I&quot;$OUTDIR&quot; -I&quot;$MATLABROOT\extern\include\$ARCH&quot;"COMPFLAGS="/c /GR /W3 /EHsc- -Zc:wchar_t /nologo /MT"COMPDEFINES="/DMSVC /DIBMPC /D_CRT_SECURE_NO_DEPRECATE"COMPINCLUDE="-I&quot;$MATLABROOT\extern\include&quot;"LINKEXPORT="/DLL /def:&quot;$DEFFILE&quot;"LINKEXPORTVER="/DLL /def:&quot;$DEFFILE&quot;"LINKLIBS="/MACHINE:AMD64 $LINKLIBS mclmcrrt.lib $MCLMAINLIB_MS &quot;$RESFILE&quot;"LDEXT=".dll"USERONLY=""LINKTYPE=""MATLABMEX=""/></client><locationFinder><VCROOT><and><or><hklmExists path="SOFTWARE\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hkcuExists path="SOFTWARE\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hklmExists path="SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hkcuExists path="SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" name="16.0" /></or><cmdReturns name="set &quot;vcroot=$$&quot;&amp;for /f &quot;delims= &quot; %a in ('type &quot;$$\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt&quot;') do @if exist &quot;$$\VC\Tools\MSVC\%a\bin\HostX64\x64\cl.exe&quot; call echo %vcroot%" /></and></VCROOT><SDKROOT><or><hklmExists path="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0" name="InstallationFolder" /><hkcuExists path="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0" name="InstallationFolder" /><hklmExists path="SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0" name="InstallationFolder" /><hkcuExists path="SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0" name="InstallationFolder" /></or></SDKROOT><VSINSTALLDIR><or><hklmExists path="SOFTWARE\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hkcuExists path="SOFTWARE\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hklmExists path="SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hkcuExists path="SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" name="16.0" /></or></VSINSTALLDIR><VCINSTALLDIR><and><or><hklmExists path="SOFTWARE\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hkcuExists path="SOFTWARE\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hklmExists path="SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hkcuExists path="SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" name="16.0" /></or><cmdReturns name="set &quot;vcroot=$$&quot;&amp;for /f &quot;delims= &quot; %a in ('type &quot;$$\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt&quot;') do @if exist &quot;$$\VC\Tools\MSVC\%a\bin\HostX64\x64\cl.exe&quot; call echo %vcroot%\VC\Tools\MSVC\%a" /></and></VCINSTALLDIR><VCVARSALLDIR><and><or><hklmExists path="SOFTWARE\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hkcuExists path="SOFTWARE\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hklmExists path="SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hkcuExists path="SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" name="16.0" /></or><fileExists name="$$\VC\Auxiliary\Build\vcvarsall.bat" /><dirExists name="$$"/></and></VCVARSALLDIR><KITSROOT><or><hklmExists path="SOFTWARE\Wow6432Node\Microsoft\Windows Kits\Installed Roots" name="KitsRoot10" /><hkcuExists path="SOFTWARE\Wow6432Node\Microsoft\Windows Kits\Installed Roots" name="KitsRoot10" /><hklmExists path="SOFTWARE\Microsoft\Windows Kits\Installed Roots" name="KitsRoot10" /><hkcuExists path="SOFTWARE\Microsoft\Windows Kits\Installed Roots" name="KitsRoot10" /></or></KITSROOT><SDKVERSION><and><or><hklmExists path="SOFTWARE\Wow6432Node\Microsoft\Windows Kits\Installed Roots" name="KitsRoot10" /><hkcuExists path="SOFTWARE\Wow6432Node\Microsoft\Windows Kits\Installed Roots" name="KitsRoot10" /><hklmExists path="SOFTWARE\Microsoft\Windows Kits\Installed Roots" name="KitsRoot10" /><hkcuExists path="SOFTWARE\Microsoft\Windows Kits\Installed Roots" name="KitsRoot10" /></or><!-- For each folder inside '<KITSROOT>\include' check for 'ucrt' and if exists return that folder name --><cmdReturns name="echo off&amp;set &quot;sdkversion=&quot;&amp;(for /f %a IN ('dir &quot;$$\include\&quot; /b /ad-h /on') do ( @if exist &quot;$$\include\%a\ucrt\&quot; set &quot;sdkversion=%a&quot; ))&amp;call echo %sdkversion%" /></and></SDKVERSION></locationFinder><envPATH="$VCINSTALLDIR\bin\HostX64\x64\;$VCROOT\Common7\IDE\VC\vcpackages;$VCROOT\Common7\IDE;$VCROOT\Common7\Tools;$SDKROOT\Bin\$SDKVERSION\x64;$SDKROOT\Bin\$SDKVERSION\x86;$SDKROOT\Bin\x64;$SDKROOT\Bin\x86;"INCLUDE="$VCINSTALLDIR\include;$VCINSTALLDIR\atlmfc\include;$KITSROOT\include\$SDKVERSION\ucrt;$KITSROOT\include\$SDKVERSION\shared;$KITSROOT\include\$SDKVERSION\um;$KITSROOT\include\$SDKVERSION\winrt;$MATLABROOT\extern\include"LIB="$VCINSTALLDIR\lib\x64;$VCINSTALLDIR\atlmfc\lib\x64;$KITSROOT\Lib\$SDKVERSION\ucrt\x64;$KITSROOT\lib\$SDKVERSION\um\x64;$MATLABROOT\lib\$ARCH"LIBPATH="$VCINSTALLDIR\lib\x64;$VCINSTALLDIR\atlmfc\lib\x64"/>
</config>

msvcpp2019.xml

<?xml version="1.0" encoding="UTF-8" ?>
<configName="Microsoft Visual C++ 2019"ShortName="MSVCPP160"Manufacturer="Microsoft"Version="16.0"Language="C++"Priority="A"Location="$VCROOT\" ><DetailsCompilerExecutable="$COMPILER"CompilerDefines="$COMPDEFINES"CompilerFlags="$COMPFLAGS"OptimizationFlags="$OPTIMFLAGS"DebugFlags="$DEBUGFLAGS"IncludeFlags="$INCLUDE"LinkerExecutable="$LINKER"LinkerFlags="$LINKFLAGS $LINKTYPE"LinkerLibraries="$LINKLIBS"LinkerDebugFlags="$LINKDEBUGFLAGS"LinkerOptimizationFlags="$LINKOPTIMFLAGS"CommandLineShell="$VCVARSALLDIR\VCVARSALL.BAT "CommandLineShellArg="amd64"CompilerDefineFormatter="/D%s"LinkerLibrarySwitchFormatter="lib%s.lib;%s.lib"LinkerPathFormatter="/LIBPATH:%s"LibrarySearchPath="$$LIB;$$LIBPATH;$$PATH;$$INCLUDE;$MATLABROOT\extern\lib\$ARCH\microsoft"/><!-- Switch guide: http://msdn.microsoft.com/en-us/library/fwkeyyhe(v=vs.71).aspx --><varsCMDLINE100="$COMPILER /c $COMPFLAGS $OPTIM $COMPDEFINES $INCLUDE $SRC /Fo$OBJ"CMDLINE200="$LINKER $LINKFLAGS $LINKTYPE $LINKOPTIM $LINKEXPORTVER $OBJS $LINKLIBS /out:$EXE"CMDLINE250="mt -outputresource:$EXE;2 -manifest $MANIFEST"CMDLINE300="del $EXP $LIB $MANIFEST $ILK"COMPILER="cl"COMPFLAGS="/Zp8 /GR /W3 /EHs /nologo /MD"COMPDEFINES="/D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0  $MATLABMEX"MATLABMEX=" /DMATLAB_MEX_FILE"OPTIMFLAGS="/O2 /Oy- /DNDEBUG"INCLUDE="-I&quot;$MATLABROOT\extern\include&quot; -I&quot;$MATLABROOT\simulink\include&quot;"DEBUGFLAGS="/Z7"LINKER="link"LINKFLAGS="/nologo /manifest "LINKTYPE="/DLL"LINKEXPORT="/EXPORT:mexFunction"LINKEXPORTVER="/EXPORT:mexFunction /EXPORT:mexfilerequiredapiversion"LINKLIBS="/LIBPATH:&quot;$MATLABROOT\extern\lib\$ARCH\microsoft&quot; libmx.lib libmex.lib libmat.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libMatlabDataArray.lib libMatlabEngine.lib"LINKDEBUGFLAGS="/debug /PDB:&quot;$TEMPNAME$LDEXT.pdb&quot;"LINKOPTIMFLAGS=""OBJEXT=".obj"LDEXT=".mexw64"SETENV="set COMPILER=$COMPILERset COMPFLAGS=/c $COMPFLAGS $COMPDEFINES $MATLABMEXset OPTIMFLAGS=$OPTIMFLAGSset DEBUGFLAGS=$DEBUGFLAGSset LINKER=$LINKERset LINKFLAGS=$LINKFLAGS /export:%ENTRYPOINT% $LINKTYPE $LINKLIBS $LINKEXPORTset LINKDEBUGFLAGS=/debug /PDB:&quot;%OUTDIR%%MEX_NAME%$LDEXT.pdb&quot;set NAME_OUTPUT=/out:&quot;%OUTDIR%%MEX_NAME%%MEX_EXT%&quot;"/><client><engineLINKLIBS="$LINKLIBS libeng.lib libMatlabDataArray.lib libMatlabEngine.lib"LINKEXPORT=""LINKEXPORTVER=""LDEXT=".exe"LINKTYPE=""MATLABMEX=""/><mbuildCMDLINE100="$COMPILER /c $COMPFLAGS $OPTIM $COMPDEFINES $INCLUDE $SRC /Fo$OBJ /UMX_COMPAT_SC"CMDLINE200="$LINKER $LINKFLAGS $LINKTYPE $LINKOPTIM $LINKEXPORT $OBJS $LINKLIBS /out:$EXE"CMDLINE250="$MTCMDLINE"CMDLINE300="del $MANIFEST &quot;$TEMPNAME.map&quot;"LINKFLAGS="/nologo /manifest /DELAYLOAD:libMatlabDataArray.dll"LINKLIBS="/MACHINE:AMD64 /LIBPATH:&quot;$MATLABROOT\extern\lib\$ARCH\microsoft&quot; libMatlabDataArray.lib libMatlabCppSharedLib.lib mclmcrrt.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib delayimp.lib"INCLUDE="-I&quot;$MATLABROOT\extern\include&quot; -I&quot;$MATLABROOT\extern\include\$ARCH&quot;"COMPFLAGS="-MD -Zp8 -GR -W3 -EHsc- -nologo"COMPDEFINES="/DMSVC /DIBMPC /D_CRT_SECURE_NO_DEPRECATE"OPTIMFLAGS="-O2 -DNDEBUG"LINKEXPORT=""LINKEXPORTVER=""LDEXT=".exe"MATLABMEX=""MTCMDLINE="mt -outputresource:$EXE;1 -manifest $MANIFEST"LINKTYPE=""LINKDEBUGFLAGS="/debug /PDB:&quot;$TEMPNAME.pdb&quot;"/><mbuild_comCMDLINE000="copy &quot;$MATLABROOT\extern\include\$ARCH\mwcomutil.tlb&quot; &quot;$OUTDIR&quot;"CMDLINE001="midl /nologo /$ARCH $COMPINCLUDE /D NDEBUG /out &quot;$OUTDIR&quot; mwcomtypes.idl"CMDLINE002="midl /nologo /$ARCH $COMPINCLUDE /D NDEBUG /out &quot;$OUTDIR&quot; &quot;$COMIDL&quot;"CMDLINE100="$COMPILER $COMPFLAGS $OPTIM $COMPDEFINES $INCLUDE $COMPINCLUDE $SRC /Fo$OBJ"CMDLINE150="rc /fo &quot;$RESFILE&quot; &quot;$RCFILE&quot;"CMDLINE250="mt -outputresource:$EXE;2 -manifest $MANIFEST"CMDLINE275="&quot;$MATLABROOT\runtime\$ARCH\mwregsvr.exe&quot; $EXE"CMDLINE300="del $MANIFEST &quot;$OUTDIR\mwcomutil.tlb&quot; &quot;$RESFILE&quot;"OUTDIR="."INCLUDE="$INCLUDE -I&quot;$OUTDIR&quot; -I&quot;$MATLABROOT\extern\include\$ARCH&quot;"COMPFLAGS="/c /GR /W3 /EHsc- /nologo /MT"COMPDEFINES="/DMSVC /DIBMPC /D_CRT_SECURE_NO_DEPRECATE /D_SECURE_SCL=0"COMPINCLUDE="-I&quot;$MATLABROOT\extern\include&quot; -I&quot;$OUTDIR&quot;"LINKEXPORT="/DLL /def:&quot;$DEFFILE&quot;"LINKEXPORTVER="/DLL /def:&quot;$DEFFILE&quot;"LINKLIBS="/MACHINE:AMD64 $LINKLIBS mclmcrrt.lib $MCLMAINLIB_MS &quot;$RESFILE&quot;"LDEXT=".dll"USERONLY=""LINKTYPE=""MATLABMEX=""/></client><locationFinder><VCROOT><and><or><hklmExists path="SOFTWARE\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hkcuExists path="SOFTWARE\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hklmExists path="SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hkcuExists path="SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" name="16.0" /></or><cmdReturns name="set &quot;vcroot=$$&quot;&amp;for /f &quot;delims= &quot; %a in ('type &quot;$$\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt&quot;') do @if exist &quot;$$\VC\Tools\MSVC\%a\bin\HostX64\x64\cl.exe&quot; call echo %vcroot%" /></and></VCROOT><SDKROOT><or><hklmExists path="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0" name="InstallationFolder" /><hkcuExists path="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0" name="InstallationFolder" /><hklmExists path="SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0" name="InstallationFolder" /><hkcuExists path="SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0" name="InstallationFolder" /></or></SDKROOT><VSINSTALLDIR><or><hklmExists path="SOFTWARE\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hkcuExists path="SOFTWARE\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hklmExists path="SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hkcuExists path="SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" name="16.0" /></or></VSINSTALLDIR><VCINSTALLDIR><and><or><hklmExists path="SOFTWARE\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hkcuExists path="SOFTWARE\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hklmExists path="SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hkcuExists path="SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" name="16.0" /></or><cmdReturns name="set &quot;vcroot=$$&quot;&amp;for /f &quot;delims= &quot; %a in ('type &quot;$$\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt&quot;') do @if exist &quot;$$\VC\Tools\MSVC\%a\bin\HostX64\x64\cl.exe&quot; call echo %vcroot%\VC\Tools\MSVC\%a" /></and></VCINSTALLDIR><VCVARSALLDIR><and><or><hklmExists path="SOFTWARE\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hkcuExists path="SOFTWARE\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hklmExists path="SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" name="16.0" /><hkcuExists path="SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" name="16.0" /></or><fileExists name="$$\VC\Auxiliary\Build\vcvarsall.bat" /><dirExists name="$$"/></and></VCVARSALLDIR><KITSROOT><or><hklmExists path="SOFTWARE\Wow6432Node\Microsoft\Windows Kits\Installed Roots" name="KitsRoot10" /><hkcuExists path="SOFTWARE\Wow6432Node\Microsoft\Windows Kits\Installed Roots" name="KitsRoot10" /><hklmExists path="SOFTWARE\Microsoft\Windows Kits\Installed Roots" name="KitsRoot10" /><hkcuExists path="SOFTWARE\Microsoft\Windows Kits\Installed Roots" name="KitsRoot10" /></or></KITSROOT><SDKVERSION><and><or><hklmExists path="SOFTWARE\Wow6432Node\Microsoft\Windows Kits\Installed Roots" name="KitsRoot10" /><hkcuExists path="SOFTWARE\Wow6432Node\Microsoft\Windows Kits\Installed Roots" name="KitsRoot10" /><hklmExists path="SOFTWARE\Microsoft\Windows Kits\Installed Roots" name="KitsRoot10" /><hkcuExists path="SOFTWARE\Microsoft\Windows Kits\Installed Roots" name="KitsRoot10" /></or><!-- For each folder inside '<KITSROOT>\include' check for 'ucrt' and if exists return that folder name --><cmdReturns name="echo off&amp;set &quot;sdkversion=&quot;&amp;(for /f %a IN ('dir &quot;$$\include\&quot; /b /ad-h /on') do ( @if exist &quot;$$\include\%a\ucrt\&quot; set &quot;sdkversion=%a&quot; ))&amp;call echo %sdkversion%" /></and></SDKVERSION></locationFinder><envPATH="$VCINSTALLDIR\bin\HostX64\x64\;$VCROOT\Common7\IDE\VC\vcpackages;$VCROOT\Common7\IDE;$VCROOT\Common7\Tools;$SDKROOT\Bin\$SDKVERSION\x64;$SDKROOT\Bin\$SDKVERSION\x86;$SDKROOT\Bin\x64;$SDKROOT\Bin\x86;"INCLUDE="$VCINSTALLDIR\include;$VCINSTALLDIR\atlmfc\include;$KITSROOT\include\$SDKVERSION\ucrt;$KITSROOT\include\$SDKVERSION\shared;$KITSROOT\include\$SDKVERSION\um;$KITSROOT\include\$SDKVERSION\winrt;$MATLABROOT\extern\include"LIB="$VCINSTALLDIR\lib\x64;$VCINSTALLDIR\atlmfc\lib\x64;$KITSROOT\Lib\$SDKVERSION\ucrt\x64;$KITSROOT\lib\$SDKVERSION\um\x64;$MATLABROOT\lib\$ARCH"LIBPATH="$VCINSTALLDIR\lib\x64;$VCINSTALLDIR\atlmfc\lib\x64"/>
</config>

或者将那两个xml文件替换为上述内容,并修改注册表
a、输入regedit
b、找到计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\Sxs\VS7
新建或修改

以上两种方法应该都能解决matlab无法识别vs编译器的问题。明明安装了vs2019却说找不到支持的编译器。
这之后可以执行mex -setup命令试试

Matlab2022a无法识别vs2019编译器,未检测到支持的编译器,错误使用Mex -setup error cannot find support compiler相关推荐

  1. Matlab2017a出现错误使用 mex 未找到支持的编译器或 SDK。

    本人使用老古董Matlab 2017a,在需要使用SVM包时,需要使用Matlab调用C++编译器,但是出现了如下错误: >> mex -setup -v 详细模式已开. ... 正在查找 ...

  2. win10禁用驱动程序强制签名_图文细说 win10系统未检测到第三个监视器的途径 -win10使用教程...

    据统计调查,好多朋友都在为图文细说 win10系统未检测到第三个监视器的途径 的问题而烦恼,小编决定将解决的办法分享给大家.对于电脑菜鸟而言看到图文细说 win10系统未检测到第三个监视器的途径 是很 ...

  3. B2B网页付款时,出现“对不起,未检测到签名控件”,不能正常支付

    环境: 惠普HP288台式机 Windows 10 专业版 64位 兴业银行飞天网盾 IE浏览器10.0 问题描述: B2B网页付款时,出现"对不起,未检测到签名控件",不能正常支 ...

  4. Hbuilder未检测到手机或模拟器请重试、苹果手机无法和hbuderx 联机调试

    今天开始学习uniapp 发现自己苹果6无法和hbuderx 联机调试,提示说未检测到手机或模拟器请重试.手机用数据线连着win10电脑了,也用手机点击信任了.这么回事?? 幸好以前,给苹果手机刷过系 ...

  5. GoLang之编译器自动检测类型是否实现接口(5)

    文章目录 GoLang之编译器自动检测类型是否实现接口(5) GoLang之编译器自动检测类型是否实现接口(5) 经常看到一些开源库里会有一些类似下面这种奇怪的用法: var _ io.Writer ...

  6. 使用ConvNets进行集成识别,定位和检测

    使用ConvNets进行集成识别,定位和检测--OverFeatIntegrated Recognition, Localization and Detection using Convolution ...

  7. “Matlab R2016a中运行‘mex -setup’,错误使用 mex 未找到支持的编译器或 SDK”的解决办法

    目录 问题描述: 原因分析: 解决方案: 1.失败经验 2.成功方法 (1)下载MinGW-w64 C/C++ 编译器 (2)安装MinGW-w64 C/C++ 编译器 (3)设置为系统环境变量 (4 ...

  8. python人脸识别、人脸关键点检测、性别检测

    python人脸识别.人脸关键点检测.性别检测 文章目录 根据人脸预测年龄性别和情绪 (python + keras)(三) 一款入门级的人脸.视频.文字检测以及识别的项目. age-gender-e ...

  9. 计算机视觉子方向,计算机视觉方向简介 | 人脸识别中的活体检测算法综述

    原标题:计算机视觉方向简介 | 人脸识别中的活体检测算法综述 本文转载自"SIGAI人工智能学习与实践平台"(ID:SIGAICN) 导言 1. 什么是活体检测? 判断捕捉到的人脸 ...

最新文章

  1. 解密 Redis 助力双 11 背后电商秒杀系统
  2. 开发日记-20190425 关键词 gradle基础学习 7年之约 启动篇
  3. Mysql导入zabbix的sql语句时报错:ERROR 1045 (28000)
  4. 中国楼市场的真相————写在厦门楼市崩盘之后
  5. 2017年第八届蓝桥杯 - 省赛 - C/C++大学A组 - B. 跳蚱蜢
  6. Dynamo:亚马逊的高可用键值存储
  7. android 支付宝 40247,支付宝 app支付异常摘记 -- ALI40247
  8. BeanFactory与FactoryBean的区别
  9. P4570 [BJWC2011]元素
  10. vba 中sql like用法
  11. 如何明智的使用计算机,幼儿园如何正确使用计算机
  12. 在ubuntu 16.04中安装source insight 4.0破解版
  13. 霍金遗作《十问:霍金沉思录》出版 马化腾作跋纪念
  14. centos 下 sphinx安装和配置
  15. 敏捷开发案例:用白板解决项目管理和团队沟通
  16. java重载父类方法_子类重载父类方法
  17. nyist——ACM新生牛刀小试 Round#1题解
  18. 验房师丨验房项目以及验房整改建议
  19. docker部署微服务
  20. Java多线程系列-CyclicBarrier

热门文章

  1. python房价预测_您的选房系统已上线——利用python和R如何进行房价预测
  2. 三井住友加入R3 Marco Polo区块链网络
  3. 数据分析师三个等级_【数据分析课|这三个等级的数据分析师报考条件,一定是你需要的】- 环球网校...
  4. iOS 中将数据导出成Excel文件 ---- libxlsxwriter框架
  5. 计算机体检查杀病毒,如何去深度查杀电脑病毒
  6. Powershell批量解锁被锁定的AD账号
  7. R 数字 字符 向量
  8. 一款超好用的markdown编辑器
  9. ubuntu docker dm_task_run failed error
  10. Linux中的nl命令