2012-05-12 83 views
1

我試圖使用已在另一個獨立項目中正常工作的代碼沒有問題。Xcode項目#include <cmath>

當我將這段代碼帶入我的其他最終項目時,它表明'cmath'文件未找到。

帶有#include的文件位於一個.hpp文件中(它只是定義了一些用於opengl的結構),所以沒有相應的.mm文件。 (這是C++代碼,我主要是一個Objective-C用戶,所以不確定所有的C++東西) 但是這是opengl的東西,並且工作正常,我們不在這個項目中。

我已經試過一切,使這項工作。

有問題的最終項目有使用#include沒有問題的其他代碼。 這幾乎就像是某些東西導致xcode不再識別頭部的路徑。 我檢查過它的文件類型,它是「Default C++ header」

在最後的項目中,我使用了Zxing並且還使用了CorePlots。不知道他們是否造成任何問題。還有一些文件正在使用#include不知道這可能是否與#incude衝突。 (但再次的#include的其他文件都工作正常

任何幫助將不勝感激...

回答

5

交替使用Jon Reid的建議,您可以在Build Settings中選擇「編譯爲Objective-C++」。 (在Build Settings窗口中搜索「Compile sources」。)這有點狂野西部,但是快速查看問題實際上是你的C++源代碼編譯爲C還是Objective-C

+0

不錯,我不知道那個開關。 –

+0

沒問題! (如果你喜歡的話,你可以放棄...) – buildsucceeded

+0

不錯,這樣做的伎倆 – casillic

4

你的頭文件本身不存在;一些必須將其導入重命名導入文件,從.M改變他們的文件類型.mm。

例如,假設你的頭,包括<CMATH>名爲foo.h.,而這又是一個bar模塊使用,bar.h組成和bar.m.所以foo.h是在bar.h或bar.m.中輸入的

Re將bar.m命名爲bar.mm,以便它使用C++。對所有依賴於foo.h的.m文件執行相同的操作。

+0

我試過了並仍然存在問題。但.mm文件是一個帶有.xib的UIViewController .xib是否對此有影響? – casillic

+0

編號 嘗試buildsucceeded的答案,在整個項目中應用C++編譯器,以防錯過另一個.mm重命名 –

+0

這可能是一個更好的答案,尤其是如果您也在項目中使用C代碼。 –