2011-09-25 3 views
8

코코아 응용 프로그램에... 내가 엑스 코드 4.0에서 코코아 응용 프로그램을 컴파일하려고 내가이 오류를 받고 있어요

fatal error: 'string' file not found 

을 #INCLUDE 와 오류를 컴파일 파일 :

동일한 작업을 수행하지만 오류가 발생하지 않는 또 다른 xcode 프로젝트가 있습니다. 빌드 설정을 좀 다르게 훑어 보았지만 찾을 수 없습니다. 유일한 차이점은 OK를 컴파일하는 프로젝트는 코코아 프로젝트가 아닌 명령 행 프로젝트로 시작되었지만 빌드 설정은 동일하다는 것입니다.

대상 OS

는 맥 OS X 10.6 미리 컴파일 된 헤더를 컴파일하고 다른 어떤 파일에 도착하지 않는 경우 오류가 발생

입니다. 컴파일 버전이 가지고있는 유일한 프레임 워크는 Foundation.framework이고 컴파일하지 않는 프레임 워크도 있습니다.

왜 한 프로젝트에서 찾지 못하고 다른 프로젝트에서 찾지 못합니까? 어떤 충고?

+0

귀하의 앱은 어느 언어로 작성 되었습니까? ''은 C++의 것이 아니라 Objective-C의 것입니까? –

+1

stl을 objective-C++에서 사용할 수 있습니다. 파일 이름을 .mm으로 지정하십시오. 나는 완전히 신선한 코코아 앱 템플릿에서이 프로젝트로 시작했고 이제는 잘 작동합니다. –

답변

0

string은 (std :: string의 경우) C++ 헤더입니다. strcpy과 같은 것을 찾으려면 string.h

13

원본 파일의 확장자는 무엇입니까? ".m"인 경우 obj-cpp ".mm"로 변경하여 Xcode가 올바른 언어를 추론하도록하십시오. 아니면 그냥 넣어 C++ - "#ifdef와 __cplusplus"블록

업데이트

이 특정는 PCH에 포함되어 있으므로 가드 프로젝트에 컴파일 된 각 언어에 대해 존재해야합니다 내부의 특정 헤더. IOW, 그것이 모두 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

+1 * "#ifdef __cplusplus"블록 "*"안에있는 C++ 특정 헤더는 올바른 해결책입니다. 그러나이 특정 포함이 pch에 있기 때문에 가드는 프로젝트에 컴파일 된 각 언어에 대해 존재해야합니다. 모든 C++ 및/또는 objC++ 인 경우 오류가 발생하지 않습니다. 분명히 C++을 인식하지 못하는 파일이 하나 이상 있습니다 (예 : c 또는 objc). 자신을 업데이트 할 것입니다 - 이제는 이것이 몇 개월 전임을 봅니다 :) – justin

+0

이것은 Cocos2D-X 프로젝트에 대해 Prefix.pch를 올바르게 설정하는 방법을 알아내는 데 도움이되었습니다. "#ifdef __cplusplus"의 C++ 특정 항목을 감싸는 것은 매력처럼 작동합니다. –

관련 문제