使用Cocoa App中的#include <string>编译错误</string>

时间:2011-09-25 00:34:59

标签: xcode stl

我正在尝试在xcode 4.0中编译一个Cocoa应用程序,我收到了这个错误......

fatal error: 'string' file not found

...尝试在此行上编译为.pch文件时:

#include <string>

我有另一个xcode项目做同样的事情,但没有得到错误。我已经搜索了一些不同的构建设置,但我找不到一个。唯一的区别是编译OK的项目是作为命令行项目启动的,而不是Cocoa项目,但构建设置是相同的。

目标操作系统是Mac OS X 10.6

编译预编译头时发生错误,但未访问任何其他文件。编译版本唯一的框架是Foundation.framework,非编译版本也有。

为什么不在一个项目中找到而在另一个项目中找不到?有什么建议吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

string是一个C ++标头(对于std :: string)。如果您要查找strcpy之类的内容,则需要添加string.h