平時跑論文的里MATLAB代碼很多都是調用了c的函數,然而然而就是在MATLAB里編譯C這個小問題卻困擾了我很久。
在matlab中編譯C程序為matlab可識別的mex文件需要使用命令: mex filename.c 。在這之前需要時用命令:mex -setup C++ 來更改缺省的compiler為相應的C編譯器。如果沒有安裝matlab支持的編譯器就會報錯:
錯誤使用 mex
未找到支持的編譯器或 SDK。有關選項,請訪問 http://www.mathworks.com/support/compilers/R2014a/win64。
這時可以直接通過連接下載安裝微軟的SDK7.1。在安裝時可選項中點選visual C++ compiler就可以了。
當然這是順利的情況,我成功過一次。
但是后來換一台電腦,問題就來了,安裝了SDK7.1還是報錯,后來發現可選項visual C++ compiler是灰的,不能點選。提示是缺少.NET Framework 4.0的支持。可是我查看了一下,那台電腦有安裝最新的.NET Framework,再安裝會提示已安裝最新版本,而且想卸載重裝都不行,用用微軟官方的Windows Install Clean-up都搞不定。后來知道,這是因為當初安裝的時候沒成功,有殘留,這就惡心了。(要解決這個麻煩就是另外一個問題了,在這里就不贅述了)
還有一次不存在上述問題,成功安裝了SDK7.1,但是還是不行。那次我用的是matlab 2014a 的破解版。這個就有點不講道理了。后來看到很多人有同樣的問題。這可能是網上廣為流傳的那個2014a的破解版本身的問題。所以遇到這種情況的朋友可以換一個版本的matlab試一下。
不過還是有其它方法解決的。那就換一個編譯器,我選擇的是TDM-GCC,Matlab本身也推薦這個。
大概步驟是:
第一步:下載TDM-GCC(注意看清是32位還是64位),TDM-GCC的安裝路徑不要包括空格; http://tdm-gcc.tdragon.net/download
第二步:新建環境變量MW_MINGW64_LOC,設置為TDM-GCC-64的安裝位置;
第三步:在MATLAB命令行內運行命令setenv(‘MW_MINGW64_LOC’,folder),folder為TDM-GCC的安裝位置,要加單引號; 最后,重啟一下MATLAB;