Ошибки компиляции с #include <string>в приложении Какао - PullRequest
8 голосов
/ 25 сентября 2011

Я пытаюсь скомпилировать приложение Какао в xcode 4.0, и я получаю эту ошибку ...

fatal error: 'string' file not found

... при попытке скомпилировать в файл .pch в этой строке:

#include <string>

У меня есть другой проект xcode, который делает то же самое, но не получает ошибку. Я проверил настройки сборки для некоторых других, но я не могу найти один. Единственное отличие состоит в том, что проект, который компилирует OK, был запущен как проект командной строки, а не проект Какао, но настройки сборки одинаковы.

Целевая ОС - Mac OS X 10.6

.

Ошибка возникает при компиляции предварительно скомпилированного заголовка и не попадает ни в один из других файлов. Единственная инфраструктура, которая есть у компилируемой версии, - это Foundation.framework, а у некомпилируемой - тоже.

Почему он не находит ни в одном проекте, ни в другом? Любой совет?

Ответы [ 2 ]

13 голосов
/ 30 января 2012

Каково расширение ваших исходных файлов? Если это «.m», попробуйте изменить его на obj-cpp «.mm», чтобы Xcode выводил правильный язык. Или просто поместите специфичные для c ++ заголовки внутри блока "#ifdef __cplusplus"

Обновление

Защита должна существовать для каждого языка, скомпилированного в проекте, потому что это конкретное включение находится в pch. Итак, если бы это было все c ++ и / или objc ++, ошибки не было бы. Очевидно, есть по крайней мере один файл, который не распознает C ++ (например, источники C или ObjC также скомпилированы в целевом объекте). Поэтому вы просто охраняете это так:

// MONPrefix.pch

#ifdef __cplusplus
#include <string>
#endif

// same for objc, so your C and C++ sources compile with no error:
#ifdef __OBJC__
#include <Foundation/Foundation.h>
#endif
0 голосов
/ 12 октября 2011

string - заголовок C ++ (для std :: string). Если вы ищете что-то вроде strcpy, вам нужно включить string.h

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...