我开始在我的Mac上运行从C代码(使用XCode 4.3)编译的MATLAB(R2012a)的MEX文件(运行OSX 10.7.3,Lion)。我已经安装了MATLAB提供的XCode patch,它将MATLAB配置为在XCode 4.2+下使用新的llvm-gcc编译器,但是我仍然在尝试使用mex timestwo.c
编译示例文件时出现以下错误:< / p>
/Applications/MATLAB_R2012a.app/extern/include/matrix.h:852:20: error: stdlib.h: No such file or directory
In file included from timestwo.c:1:
/Applications/MATLAB_R2012a.app/extern/include/mex.h:161:19: error: stdio.h: No such file or directory
编译然后中断
mex: compile of ' "timestwo.c"' failed.
Error using mex (line 206)
Unable to complete successfully.
显然,编译器找不到标准库头文件目录,但是我需要更改哪些才能成功编译?
答案 0 :(得分:11)
MATLAB提供的模板使用/ Developer / ...作为SDK位置,但是在XCode4.3下更改为在XCode.app下生存。为了解决问题,我必须编辑~/.matlab/R2012a/mexopts.sh
文件以将SDKROOT目录设置为新位置。
要执行此操作,请在mexopts.sh文件中搜索SDKROOT并将其更改为:
SDKROOT='/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/'
注意,我选择了我在Lion上的10.7 sdk b / c。如果你在Snow Leopard上,请使用10.6
答案 1 :(得分:5)
我正在运行Mac Mountain Lion和Matlab R2012b,以下解决方案适用于我:Matlab 2012a Mex to work with Xcode 4.5 on Mountain Lion
准确地说, 我收到了以下错误:
error: stdio.h: No such file or directory
error: stdlib.h: No such file or directory
error: math.h: No such file or directory
所以我为解决这个问题做了什么:
我使用命令行工具安装了Xcode,然后通过以下方式编辑了文件“/Applications/MATLAB_R2012b.app/bin/mexopts.sh”:
将CC从gcc-4.2更改为llvm-gcc-4.2
将CXX从gcc-4.2更改为llvm-g ++ - 4.2
将SDKROOT设置为'/'
然后我在MATLAB中运行“mex -setup”,选择数字1,然后选择y覆盖旧的/Users/insertyournamehere/.matlab/R2012b/mexopts.sh
解决了它:)
答案 2 :(得分:0)
您可以在此处找到有价值的信息:http://www.mathworks.fr/support/solutions/en/data/1-FR6LXJ/