在使用Matlab2017a編譯一個c文件時,提示以下錯誤:c++
fatal error C1083: 沒法打開包括文件: 「stdlib.h」: No such file or directory
。code
系統中安裝的是VS2015,正常狀況下VS2015使用的是Win SDK 8.1,但因爲此前編譯CEF把8.1卸載掉,期間又獨立安裝了Win Kit 10的10.0.14393.0(Windows 10以後的SDK再也不放到Microsoft SDKs了,而是統一放到Windows Kits,微軟的SDK安裝目錄仍是挺亂的)。xml
在安裝Matlab2017a後,發現bin\win64\mexopts目錄下的msvc2015.xml使用的WinKit竟然寫死了include的引用路徑爲$KITSROOT\include\10.0.10150.0\ucrt,但這個不存在的路徑在使用mex -setup設置期間是不報錯的,致使在實際的編譯過程當中,出現找不到「stdlib.h」的錯誤。編譯器
要修復以上的錯誤,須要如下步驟:it
1)修改 bin\win64\mexopts目錄下的msvc2015.xml,將其中10.0.10150.0替換成有效的10.0.14393.0。編譯
2)Matlab2017a在第一次使用mex -setup設置成功(雖然實際是存在錯誤的)後,會將mex編譯器配置保存到C:\Users\Administrator\AppData\Roaming\MathWorks\MATLAB\R2017a下的mex_C_win64.xml中,所以只作第一步是無效的,須要將該xml文件也修改了。或者使用mex -setup先設置爲其餘編譯器,再從新設置爲vc2015編譯器(前提是存在其餘有效編譯器選項)配置
提示:c++編譯器若存在通用問題也是按照以上方法修改。file