2012-12-18 47 views
0

構建我的項目時出現這個奇怪的問題。問題如下:詞法或預處理器錯誤:使用box2d&cocos2d找不到文件

我和朋友正在開發一個項目,我們正在使用相同的xcode,cocos2d和box2d版本。 他的項目編譯(建立)罰款,而我的時候給我這個錯誤: cassert文件未找到。

我拿了他的xcode.project的副本,但沒有任何問題。

我希望這個代碼總結好什麼,我想說:

GameLayer.h 
#import bla bla //the usual required files 
@class myOwnClass1; 
@class myOwnClass2; 

myOwnClass1 *test1; 
myOwnClass2 *test2; 

現在我想包括GameLayer.h在任一myOwnClass1.hmyOwnClass2.h使用#import但它會給我的錯誤! 如果我沒有@class GameLayer;沒有問題。

的事情是在我朋友的項目他做的#import沒有錯誤,這就是超級怪異的(至少對我來說)

建議嗎?

P.S.我知道,將.m更改爲.mm可以解決這個問題,但是,在我朋友的項目中,他又使用了.m

+0

你能粘貼你得到確切的錯誤消息文本?並指定哪一行被標記? – sergio

+0

確切的錯誤信息是:'詞法或預處理器錯誤:找不到文件',並顯示'#include '包含在'b2dsettings.h'中的代碼行。如果這還不夠,我會在回家時發佈一些代碼(macbook @ home) – Saifallah

回答

0

由於某種原因,事實證明,從頭開始創建一個新項目解決了這個問題,現在除非另有人有其他意見,否則我會將此標記爲正確答案。

1

我想你的項目和朋友之間的編譯器設置不匹配。

總之:cassert是一個C++頭文件;你一定需要一個C++編譯器來編譯它。

現在,我的猜測是,在你的朋友的項目中,GameLayer.m文件被標記爲C++文件,儘管它的擴展名爲.m

要驗證,請在文本編輯器中打開您的項目(和您的朋友的)project.pbxproj文件並查找GameLayer.m文件。你會得到這樣的條目:

347F5D94158BA4840058BC21 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; 

如你所見,lastKnownFileType鍵說sourcecode.c.objc:此標識的Objective-C文件。如果你看到sourcecode.cpp.objcpp,那意味着客觀的C++。

希望這有助於澄清它。

+0

我完成工作後肯定會檢查出來。當我跟他覈對時,他告訴我他沒有修改任何東西,也沒有操縱任何設置,但無論如何,除非我自己檢查,否則我無法確定。謝謝@sergio – Saifallah

+0

負面,我們都有相同的'D87300F41679D0E900CF1744/* main.m */= {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree =「」; };'和我的'635CEB9D167FAC22005BB58B/* main.m */= {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree =「」; };' – Saifallah

+0

我可以關閉這個問題嗎?我們從頭開始做了另一個項目,它的工作,不知道爲什麼舊的不會。所以我認爲我們可以解決這個問題。 – Saifallah

0

下面是我如何解決這個問題。清理和重建項目對我來說似乎不是一個好主意。

這個問題在網上有幾個答案,但他們在每個答案都沒有幫助我解決問題。一個是因此在

cassert file not found but i use Box2d template,另一種是上了cocos2d-iphone論壇,

http://www.cocos2d-iphone.org/forums/topic/cannot-include-box2d-cassert-file-not-found-despite-every-file-being-mm/

結合使用這兩種建議樣的工作對我來說 -

  1. Rename all YOUR (not cocos2d or box2d files, just your project files) from .m to .mm
  2. Make sure that on each of the files, on the right pane, 「Type」 option is set to 「Default – Objective C++ Source」

還有一個問題對我而言,對你而言可能不是問題,我使用以下簽名進行CCLabelTTF

CCLabelTTF *title = [CCLabelTTF labelWithString:@"Hello" dimensions:CGSizeMake(720.0f, 880.0f) alignment:UITextAlignmentLeft fontName:@"Arial" fontSize:34]; 

這已被棄用,並造成各地的錯誤。我現在用以下稍做修改,並修復錯誤 -

CCLabelTTF *title = [CCLabelTTF labelWithString:@"Hello" dimensions:CGSizeMake(720.0f, 880.0f) hAlignment:kCCTextAlignmentRight fontName:@"Arial" fontSize:34]; 

我此修復程序的最新書面記錄,可以發現 - http://indiangamer.com/how-i-fixed-the-cocos2d-box2d-include-file-not-found-error/

相關問題