平时跑论文的里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;