1. 程式人生 > >matlab: mex命令提示找不到編譯器或SDK

matlab: mex命令提示找不到編譯器或SDK

       本人在學習caffe時候 在配置一個模型的時候需要呼叫matlab介面來啟用vs編譯器。但是mex命令一直提示找不到編譯器或SDK,在髮網上搜索了很多資料,解決辦法各種各樣, 但都沒有解決我的問題,經過一番仔細研究,終於解決,先把這個問題一些相關注意問題做個整理,為大家提供個參考。

        本人的執行環境:

        系統:win10(64bit)

        matlab:matlab2016a

         vs: vs2013

         SDK: v8.1

        要解決相關的mex命令找不到編譯器,首先就需要了解相關命令呼叫的配置檔案的路徑位於:<MatlabRoot>/bin/win64/mexopts。裡面有很多和和編譯器以及SDK相關的環境配置檔案。下圖是我的mexopts資料夾下的配置檔案:

 

  可以看到裡面都是一些xml檔案(注:從2016往後所有配置檔案都用xml檔案來儲存,如果你的是2016以前的版本,該資料夾下是一些stp和bat檔案。但內容都是一致的 儲存的是SDK和不同版本編譯器的路徑資訊),這些檔案裡面儲存了所有其所有版本的編譯器的一些路徑資訊,mex命令找不到編譯器或SDK問題就出在這些配置檔案上,我大致把原因歸結為兩類:

1、matlab版本問題  如上圖所示,標明瞭不同型別版本的編譯器配置檔案,如果你的編譯器版本的配置資訊不再這個資料夾裡面 自然會提示找不到到資料夾(比如說 msvc2017(貌似今年就會發布了吧))。這類問題網上有很多解決方法,提供了很多相應版本的配置檔案,你只要將其拷到mexopts資料夾下,就解決了。

        2、配置檔案裡面的 路徑和你電腦的實際路徑不一致  我遇到的問題就屬於這一類問題。以我的編譯器版本vs2013做例子,你要仔細核對 msvc2013.xml和msvcpp2013.xml這兩個配置檔案的資訊。我這裡截取了一部分配置資訊,如下圖:


  我用彩筆勾出了一些關鍵資訊,如 VC編譯器的路徑 、SDK的路徑(這些是讀取系統的登錄檔資訊的,你可以去和你實際登錄檔資訊進行比對)和VS的一些環境變數資訊,我再一一對比後終於發現是自己VS環境變數VS120COMNTOOLS的路徑出了問題。修改了正確的路徑之後,問題解決了。