我在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上运行正常
答案 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。