MATLAB MEX找不到带有XCode 4.3(Mac)的标准库

Bry*_*n P 5 matlab xcode mex xcode4.3

我开始在我的Mac上运行从C代码(使用XCode 4.3)编译的MATLAB(R2012a)的MEX文件(运行OSX 10.7.3,Lion).我已经安装了MATLAB提供的XCode补丁,该补丁配置MATLAB以在XCode 4.2+下使用新的llvm-gcc编译器,但是我仍然在尝试使用以下命令编译示例文件时出现以下错误mex timestwo.c:

/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
Run Code Online (Sandbox Code Playgroud)

编译然后打破

mex: compile of ' "timestwo.c"' failed.

Error using mex (line 206)
Unable to complete successfully.
Run Code Online (Sandbox Code Playgroud)

显然,编译器找不到标准库头文件目录,但是需要更改才能成功编译?

Bry*_*n P 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/'
Run Code Online (Sandbox Code Playgroud)

注意,我选择了我在Lion上的10.7 sdk b/c.如果你在Snow Leopard上,请使用10.6


fga*_*gar 5

我正在运行Mac Mountain Lion和Matlab R2012b,以下解决方案适合我:Matlab 2012a Mex与Mountain Lion上的Xcode 4.5一起使用

确切地说,我遇到了以下错误:

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

这解决了:)