2011-06-26 244 views
6

所以我需要在我的项目中使用矢量。我已将.m文件更改为.mm以使其成为Objective-C++。但是,当我试着说:#include <vector>没有这样的文件或目录

#include <vector> 

在我的.h它表示无法找到文件或目录。如果我把这行代码放在我的.mm文件中,尽管这个错误没有出现,但是因为我需要一个在@interface(在我的.h中)的向量,我应该怎么做才能使.h文件找到矢量文件?

而且,我试图将其更改为编译一切为的Objective-C++,但是,这并不工作,因为我在我使用cocos2d的库得到一些错误...

回答

27

是您的.h文件中被包含在任何其他.h或.m文件中?

如果是这样,您必须将这些文件(或包括它们的文件等)制作成.mm文件。

+0

那么将.h和.mm结合在一起? – Dair

+5

没有。这个特定的头文件(比如x.h)自然包含在x.mm中,但是大概你在某个OTHER模块中也使用了x类型的对象,比如说y。因此,y.h将包含“#include x.h”行。现在,当编译器编译y.m时,它不会期待C++代码,所以当遇到x.h的时候,它会提示“include ”。因此,即使你在y.mm中没有使用任何C++代码,ym也必须重命名为y.mm。最后,yh可以包含在,例如zh中,并且你必须将zm转换为z.mm等。因此,包含它更容易如果可以的话,在mm文件中的矢量。 – mackworth

+0

好的,工作。谢谢! – Dair

6

不改变任何.M到.mm或类似的东西,如果你点击你的项目,点击tagets->构建设置再往一路“LLVM GCC 4.2 - 语言”,你会看到编译源代码如将该值更改为Objective-C++;

相关问题