需要用MATLAB来编译一些C代码,但是总是无法找到编译器,网上很多教程并没有什么用,经过摸索终于成功,现予以总结,供遇到类似问题的童鞋参考。
说明:我的MATLAB是2017b,VS是2019版,其他高版本解决方法类似。
这种问题一般认为是先安装了MATLAB,后安装了VS所导致的,但是我们不建议重新安装MATLAB,没有那个必要。可以按照以下步骤进行尝试:
1. MATALB中运行mex -setup
出现问题,未找到编译器,让我安装MinGW-w64,我已经安装了VS,干嘛还要去安装什么其他编译器。
2. MATLAB中运行mex -setup -v,进入详细模式搜索
注意看红色框部分,MATLAB主要从注册表中读取SDK和Visual studio的安装路径,出现“否”就代表注册表或环境变量中没有相应的信息或者信息错误。因此我们可以根据具体情况修改注册表和环境变量。
3. 按WIN+R键,输入regedit,打开注册表
上图中“HKLM”代表“HKEY_LOCAL_MACHINE”,而“HKCU”代表“HKEY_CURRENT_USER”。
(1)好了,我们按照上图红框中MATLAB的提示“'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7'”先进入HKEY_LOCAL_MACHINE下的路径,发现VisualStudio下竟然没有“SxS”,我们手动添加上,并加上VS7和16.0
“16.0”的值设置为VS的目录,我的是2019社区版,所以按照上面的路径设置。
这里要注意的是要按照你的VS版本设置相应的值,比如VS2019就是16.0,千万不要和以前的版本搞混。
(2)按照MATLAB的提示“'HKCU\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7'”进入HKEY_CURRENT_USER下的路径,同样加上SxS、VC7和16.0
这里“16.0”的值设置为VC的目录。
4. 进入MATLAB目录“C:\Program Files\MATLAB\R2017b\bin\win64\mexopts”下,添加两个文件“msvc2019.xml”和“msvcpp2019.xml”:(若你的版本是2017等也一样,找对应的)
文件链接:
https://download.****.net/download/no_say_you_know/12119043
5. MATLA中再次运行mex -setup -v
配置为“Microsoft Visual C++ 2019 (C)”编译器,成功!