在C ++文件</string>中的iOS中找不到#include <string>文件

时间:2012-05-01 22:15:36

标签: c++ ios xcode

我在iOS下有一个客观的c / c ++项目,从OS / X移动它,我得到一个'找不到文件'错误

#include <string>

这是一个干净的项目,我刚刚添加了旧项目中的文件。 STL是否包含在XCode中设置?一个发现产生了许多可能性,例如。

/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/usr/include/c++/4.2.1/debug/

但是将其添加到搜索路径只会引发更多错误。有什么建议? (除了不使用字符串 - 它是我正在移植的房屋代码)

xcode 4.2.1,ios5.0在OS / X 10.7.3上运行,并且在.cpp文件中,代码在OS / X上运行正常

2 个答案:

答案 0 :(得分:16)

你真的确定只有.cpp文件中包含<string>吗?

我刚刚测试了一个新项目,通过添加一个.cpp文件并包含<string>,它就可以正常工作了(相同的Xcode版本,相同的SDK版本)。

但是如果我在.m文件中包含<string>,那么当然我得到了一个“找不到文件”编译器错误。

所以仔细检查一下,因为错误可能来自这里。

您是仅从.cpp文件中包含<string>,还是从.cpp实现中使用的.h文件中添加? 也许它也包含在.m文件中,因此错误。

还要检查预编译的头文件(如果有的话),看看你是否包含了一些C ++内容......

还要记住,在后一种情况下,您可以在需要时依赖__cplusplus宏。

答案 1 :(得分:10)

如果您在ObjC文件中包含标题并且它包含<string>,那么您会遇到这样的错误。对于所有.m文件,XCode使用C编译器(clang或llvm-gcc)。对于它将使用的所有.mm文件(clang ++或llvm-g ++)。

我建议您将所有.m文件重命名为.mm。包括main.m到main.mm。