1.問題描述(為了方便問題索引):
VS2019與MATLAB 2017b 混合編程的環(huán)境配置。
MATLAB 2017b調(diào)用C程序。
Visual Studio 2019 + matlab2017b mex無法正常使用,找不到已安裝的編譯器。
VS2019+matlab 2017b聯(lián)合編程,找不到VS19的編譯器。
低版本的matlab2017b找不到高版本VS2019的編譯器。mex -setup出問題。
2.錯誤提示:
>> mex -setup
錯誤使用 mex
未找到支持的編譯器或 SDK。您可以安裝免費提供的 MinGW-w64 C/C++ 編譯器;請參閱安裝 MinGW-w64 編譯器。有關更多選項,請訪問
http://www.mathworks.com/support/compilers/R2017b/win64.html。
3.造成問題的原因:
matlab 2017b最高支持的VS版本是VS2017,如下圖綠色框,其中msvc2019和msvcpp2019是我后續(xù)添加進去的。(確認自己MATLAB版本支持VS版本的方式:定位到自己的MATLAB安裝路徑下,如下圖頂端紅色框是我的路徑,路徑可參考找到)
進而導致matlab 2017b無法調(diào)用VS2019.

4.解決方法:(兩種方式可選)
1.安裝TDM-GCC-64軟件(切記安裝該軟件的路徑不能出現(xiàn)空格),其版本必須與MATLAB的版本匹配。
其次,在計算機的環(huán)境變量中創(chuàng)建環(huán)境變量MW_MINGW64_LOC,設置為TDM-GCC-64的安裝位置;最后, 在matlab中輸入:setenv(‘MW_MINGW64_LOC’,‘安裝路徑’); savepath;? 操作完成后,重啟matlab,再mex就可以通過了。(也可能出錯,因為TDM-GCC和MATLAB版本不匹配。MATLAB命令行窗口中輸入mex -setup 查看成功與否)
MATLAB2017b 與tdm-gcc-5.3.0匹配,但是官網(wǎng)根本下載不到,因為版本比較早吧。(下載地址:https://jmeubank.github.io/tdm-gcc/)
雖然說下載“mingw-w64-install.exe”這個可執(zhí)行程序可以選擇對應版本,但是安裝后依舊失敗,無法執(zhí)行C程序,可能是因為是32位吧(我的系統(tǒng)是64位)。


2,使用VS的編譯器。
首先,在MATLAB命令行窗口輸入mex -setup -v 來詳細查看缺少什么配件。


如上圖紅色框(我安裝的是VS2019),發(fā)現(xiàn)沒有編譯器VS2019。,MATLAB是從注冊表中讀取SDK和Visual studio的安裝路徑,出現(xiàn)“否”代表注冊表或環(huán)境變量中沒有相應的信息或者信息錯誤。因此我們可以根據(jù)具體情況修改注冊表和環(huán)境變量。
為了解決這個問題,首先需要下載MATLAB所需要的支持包:msvc2019.xml和msvcpp2019.xml,(下載地址:https://download.csdn.net/download/hefengxiyulu/69902125),然后將這兩個文件放到MATLAB路徑下,具體位置見上述第一個圖(..\MATLAB\R2017b\bin\win64\mexopts)。這是再次輸入mex -setup -v ,如果出現(xiàn)下圖,這說明配置成功。

如果未出現(xiàn),則說明未配置成功,則需要繼續(xù)配置注冊表。
?按WIN+R鍵,輸入regedit,打開注冊表
上圖“查看缺少配件2”中“HKLM”代表“HKEY_LOCAL_MACHINE”,而“HKCU”代表“HKEY_CURRENT_USER”。
基于此信息,我們安裝它的提示路徑進行修改,
(1)按照路徑:計算機\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\SxS\VS7,提示,進入到相應位置,此時可能不存在該路徑,那就手動加上相應路徑,并加上VS7和16.0,“16.0”的值設置為VS的目錄,對應的數(shù)據(jù)項添加VS的路徑,如下圖的紅色框。(主要就是根據(jù)MATLAB的提示路徑,添加內(nèi)容,路徑不存在,那就添加相應的路徑)

(1)按照路徑:計算機\HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\SxS\VS7,提示,進入到相應位置,然后進行類似上述的類似操作。同樣加上SxS、VS7和16.0,這里“16.0”的值設置為VC的目錄,并設置相應路徑。注意此處的路徑是VS路徑下的VC目錄,見下圖紅框。

最后,進行驗證。
在MATLAB命令行輸入mex -setup(注意mex和-之間有一個空格,不加空格是會出錯的)。如果c語言編譯器和MATLAB版本是相配的輸入mex -setup之后就會出來如下圖所示的信息,如果不相配,系統(tǒng)就會報錯,說找不到編譯器或SDK等。

然后選擇mex -setup c++

此時,恭喜你,你已經(jīng)完成了MATLAB中的配置。
注:寫的比較凌亂,但是大致意思以表達清楚,如有問題,可留言討論。
參考鏈接:Matlab2016a mex -setup出錯的解決方法(VS2013),解決MATLAB對VS高版本出現(xiàn)“錯誤使用 mex未找到支持的編譯器或 SDK?!钡膯栴},【詳細記錄】Visual Studio 2019+matlab2017b mex無法正常使用,找不到已安裝的編譯器,MinGW-w64安裝教程 著名C/C++編譯器GCC的Windows版本