MATLAB MEX не может найти стандартную библиотеку с XCode 4.3 (Mac) - PullRequest
5 голосов
/ 23 марта 2012

Я начинаю использовать MEX-файлы для MATLAB (R2012a), скомпилированные из кода C (используя XCode 4.3) на моем Mac (под управлением OSX 10.7.3, Lion). Я уже установил MATLAB XCode patch , который настраивает MATLAB для использования нового компилятора llvm-gcc под XCode 4.2+, но я все еще получаю следующую ошибку при попытке скомпилировать файл примера с использованием 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

Затем компиляция прерывается

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

Error using mex (line 206)
Unable to complete successfully.

Ясно, что компилятор не может найти каталог заголовка стандартной библиотеки, но что мне нужно изменить для успешной компиляции?

Ответы [ 3 ]

11 голосов
/ 24 марта 2012

Ах, нашел это!

Шаблон, предоставленный MATLAB, использует / Developer / ... для расположения SDK, но это изменилось в XCode4.3, чтобы жить в XCode.app. Чтобы исправить ситуацию, мне пришлось отредактировать мой ~/.matlab/R2012a/mexopts.sh файл, чтобы установить каталог SDKROOT в новом месте.

Для этого найдите SDKROOT в файле mexopts.sh и измените его следующим образом:

SDKROOT='/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/'

Обратите внимание, я выбрал 10,7 SDK б / к, я на льве. Используйте 10.6, если вы находитесь на Snow Leopard

5 голосов
/ 14 января 2013

Я использую Mac Mountain Lion и Matlab R2012b, и у меня работает следующее решение: Matlab 2012a Mex для работы с Xcode 4.5 на 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 на '/'

Затем я запустил "mex -setup" в MATLAB, выбрал номер 1 и выбрал y, чтобы перезаписать старый /Users/insertyournamehere/.matlab/R2012b/mexopts.sh

Вот и решил:)

0 голосов
/ 16 мая 2013

Вы найдете ценную информацию здесь: http://www.mathworks.fr/support/solutions/en/data/1-FR6LXJ/

...