2013-01-13 33 views
1

我試圖在用LLVM GCC 4.2編譯的Xcode 4.5中開發的iOS6.0應用程序中使用std :: vector,我用.mm擴展名重命名了我正在使用C++的文件。但由於某些原因,與這些.mm相關聯的頭文件無法編譯我有以下錯誤:在.mm文件中找到C++標準庫,但不在.h中(Xcode 4.5 LLVM GCC 4.2)

Vector:No such file或目錄

我試過導入,包括。如果我只將它包含在.mm中,它就可以工作。

任何想法我做錯了什麼?

謝謝

Webaba

解決:仔細檢查有無其他.m文件可能包含這一頭。 (不僅是實施班級的人)我錯過了一次。

+0

我不明白這一行:「我試過導入,包括,如果我只將它包含在.mm中,它可以工作。」 ...你能解釋更多嗎?什麼有效或無效? – foundry

+1

矢量大寫V?也許沒有這樣的文件或目錄。 –

+0

我試過#include ,#include 和#import。我用小寫字母寫了它,但錯誤消息有一個大寫字母。 – webaba

回答

1

確保包含頭文件的任何文件都被編譯爲Objective-C++或C++文件。你可以通過選擇一個源文件來做到這一點,並且在Utilities面板的File Inspector中,你可以設置Xcode應該如何編譯你的文件。

例如,如果您嘗試編譯包含Objective-C標頭的C源文件,也會發生同樣的情況。

編輯:如果用來編譯命令包含像-nostdinc-nostdinC++什麼,那麼你可能需要更改您的項目設置。在LLVM GCC 4.2 - 語言中應該有一個設置,標記爲使用標準系統頭文件夾(對於我來說這是該部分的最後一個設置)。確保它被設置爲是。

+0

謝謝你的回答。我有3個文件導入頭,他們都是類型:「Objective C++」 – webaba

+0

你可以去建立日誌(右鍵單擊錯誤,它應該說在日誌中顯示),並檢查命令是否用於編譯包含任何類似** - nostdinc **或** - nostdinC++ **?如果是這樣,你可能不得不改變你的項目設置。在LLVM GCC 4.2 - 語言中應該有一個設置,標記爲**使用標準系統標題目錄**(對於我來說這是該部分的最後一個設置)。確保它被設置爲是。 – npepinpe

+0

再次感謝您。我在編譯器命令行中看不到這些標誌,並且您正在討論的設置已經設置爲尚未設置。此外,當我開始寫包括自動完成建議我正確的文件,所以它很奇怪。 – webaba

相關問題