2011-06-26 82 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++;

相關問題