matlab 錯誤使用 mex 未找到支持的編譯器或 SDK。

 

matlab2014a和matlab2014b版本,在編譯cpp文件時出現了 “錯誤使用 mex  未找到支持的編譯器或 SDK。” 上網查找了一圈的解決方法,最後摸索出一條簡單粗暴的路子,通過安裝visual studio2010完美解決(注意版本)

出現這個問題的原因是MATLAB找不到適用的編譯器。安裝新的編譯器或者讓軟件找到編譯器纔是正解,網上說的安裝sdk或者修改變量也是這個原理。(使用 mex -setup -v可以查看尋找編譯器的過程)

 

嘗試過的方法彙總:

  1. 選擇visual studio版本的時候,建議選擇低一點的版本;安裝過VS2015,無效。
  2. 修改<MatlabRoot>/bin/win64/mexopts文件夾下的MSVC......Xml文件,無效。(修改了就好像沒有修改一樣...)參考
  3. 安裝sdk軟件,安裝過MinGW-w64 C/C++還有window的sdk編譯器,失敗。(安裝MinGW-w64 C/C++按照指定路徑安裝設置環境變量,無效。      在安裝window的sdk時要求時.Net Framework 4.0,奈何只有4.6及以上,用盡各種辦法都不能把.Net Framework 換成4.0,失敗。)參考
  4. 利用mex -setup -v檢查已安裝的編譯器缺少的東西,並且安裝,十分麻煩,卒。參考

以上方法僅僅是我個人嘗試無效,寫出來只是作爲方法總結,針對個體差異,可按需採用。

 

------------------------------------------------------以下碎碎念,可以不看--------------------------------------------------------------

吐槽:也許使用的電腦骨骼驚奇,以上嘗試統統失敗。最後通過安裝VS2010成果解決,真香(不能只追求高版本)。

附:mex -setup -v運行結果(最後一行:能夠找到vs2010作爲編譯器):

>> mex -setup -v
詳細模式已開。
... 正在查找編譯器 'Intel C++ Composer XE 2011 with Microsoft SDK 7.1 (C)'...
... 正在查找環境變量 'ICPP_COMPILER12'...否。
找不到已安裝的編譯器 'Intel C++ Composer XE 2011 with Microsoft SDK 7.1 (C)'。
... 正在查找編譯器 'Intel C++ Composer XE 2011 with Microsoft Visual Studio 2008 (C)'...
... 正在查找環境變量 'ICPP_COMPILER12'...否。
找不到已安裝的編譯器 'Intel C++ Composer XE 2011 with Microsoft Visual Studio 2008 (C)'。
... 正在查找編譯器 'Intel C++ Composer XE 2011 with Microsoft Visual Studio 2010 (C)'...
... 正在查找環境變量 'ICPP_COMPILER12'...否。
找不到已安裝的編譯器 'Intel C++ Composer XE 2011 with Microsoft Visual Studio 2010 (C)'。
... 正在查找編譯器 'Intel C++ Composer XE 2013 with Microsoft SDK 7.1'...
... 正在查找環境變量 'ICPP_COMPILER14'...否。
... 正在查找環境變量 'ICPP_COMPILER13'...否。
找不到已安裝的編譯器 'Intel C++ Composer XE 2013 with Microsoft SDK 7.1'。
... 正在查找編譯器 'Intel C++ Composer XE 2013 with Microsoft Visual Studio 2010 (C)'...
... 正在查找環境變量 'ICPP_COMPILER14'...否。
... 正在查找環境變量 'ICPP_COMPILER13'...否。
找不到已安裝的編譯器 'Intel C++ Composer XE 2013 with Microsoft Visual Studio 2010 (C)'。
... 正在查找編譯器 'Intel C++ Composer XE 2013 with Microsoft Visual Studio 2012 (C)'...
... 正在查找環境變量 'ICPP_COMPILER14'...否。
... 正在查找環境變量 'ICPP_COMPILER13'...否。
找不到已安裝的編譯器 'Intel C++ Composer XE 2013 with Microsoft Visual Studio 2012 (C)'。
... 正在查找編譯器 'Microsoft Visual C++ 2008 (C)'...
... 正在查找環境變量 'VS90COMNTOOLS'...否。
找不到已安裝的編譯器 'Microsoft Visual C++ 2008 (C)'。
... 正在查找編譯器 'Microsoft Visual C++ 2010 (C)'...
... 正在查找環境變量 'VS100COMNTOOLS'...是('c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\')。
... 正在查找文件 'c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\cl.exe'...是。
... 正在查找文件夾 'c:\Program Files (x86)\Microsoft Visual Studio 10.0'...是。
... 正在查找註冊表設置 'HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A' InstallationFolder...是('c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\')。
... 正在查找環境變量 'VS100COMNTOOLS'...是('c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\')。
... 正在查找文件 'c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe'...是。
... 正在查找環境變量 'VS100COMNTOOLS'...是('c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\')。
... 正在查找文件 'c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat'...是。
... 正在查找文件夾 'c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC'...是。
找到已安裝的編譯器 'Microsoft Visual C++ 2010 (C)'。
... 正在查找編譯器 'Microsoft Visual C++ 2012 (C)'...
... 正在查找註冊表設置 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 11.0...否。
... 正在查找註冊表設置 'HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 11.0...否。
... 正在查找註冊表設置 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' 11.0...否。
... 正在查找註冊表設置 'HKCU\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' 11.0...否。
找不到已安裝的編譯器 'Microsoft Visual C++ 2012 (C)'。
... 正在查找編譯器 'Microsoft Visual C++ 2013 Professional (C)'...
... 正在查找註冊表設置 'HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 12.0...否。
... 正在查找註冊表設置 'HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VS7' 12.0...否。
... 正在查找註冊表設置 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' 12.0...否。
... 正在查找註冊表設置 'HKCU\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7' 12.0...否。
找不到已安裝的編譯器 'Microsoft Visual C++ 2013 Professional (C)'。
... 正在查找編譯器 'Microsoft Windows SDK 7.1 (C)'...
... 正在查找註冊表設置 'HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1' InstallationFolder...否。
找不到已安裝的編譯器 'Microsoft Windows SDK 7.1 (C)'。
... 正在查找編譯器 'Microsoft Visual C++ 2010 (C)'...
... 正在查找環境變量 'VS100COMNTOOLS'...是('c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\')。
... 正在查找文件 'c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\cl.exe'...是。
... 正在查找文件夾 'c:\Program Files (x86)\Microsoft Visual Studio 10.0'...是。
... 正在查找註冊表設置 'HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A' InstallationFolder...是('c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\')。
... 正在查找環境變量 'VS100COMNTOOLS'...是('c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\')。
... 正在查找文件 'c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe'...是。
... 正在查找環境變量 'VS100COMNTOOLS'...是('c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\')。
... 正在查找文件 'c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat'...是。
... 正在查找文件夾 'c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC'...是。
找到已安裝的編譯器 'Microsoft Visual C++ 2010 (C)'。
MEX 配置爲使用 'Microsoft Visual C++ 2010 (C)' 以進行 C 語言編譯。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章