2010-03-10 39 views
0

當我嘗試構建(Build-> build)時出現以下錯誤:單元測試。我的單元測試是一個邏輯測試(它不在設備上運行)。iPhone單元測試時出錯:'*',',',',','asm'或'__attribute__'在'*'標記之前

可能與我的問題有關的事情有: 我正在使用libxml2和它的包裝(我在cocoawithlove發現的)。

該封裝器定義了一些C函數(它不是帶有@interface@implementation的Objective C類)。 我使用(和其上的錯誤是發生)的功能是

NSArray *PerformHTMLXPathQuery(NSData *document, NSString *query); 

奇怪的是,所有工作得很好,當我建立我的應用程序,並在模擬器中運行它。然而,當我嘗試運行我的單元測試,我得到這個錯誤:

/Users/me/XCodeWorkspace/MyProject/XPathQuery.h:15:0 Expected '=', ',', ';', 'asm' or '__attribute__' before '*' token in /Users/me/XCodeWorkspace/MyProject/XPathQuery.h 

這裏有一些相關的問題,但他們都不似乎解決我的問題。 特別是: iphone error: expected '=', ',', ';', 'asm' or '__attribute__' before ' 'foo' 但是這裏應該包含一些C++代碼。

謝謝你的幫助。

+0

您也可以使用LLVM而不是GCC。好的和更清晰的錯誤信息! – gcamp 2011-08-31 23:58:35

回答

0

嘗試更改我的文件的文件類型(我嘗試了幾種不同的方法,但都沒有幫助),我決定將這些文件重寫爲「目標-C文件的方法而不是函數。 這解決了我的問題。

0

很可能編譯器試圖將您的文件編譯爲C代碼而不是Objective-C代碼。它看到一些奇怪的東西,例如NSString,它不是C語言的一部分,所以它對你很敏感。

如果將文件更改爲Objective-C或Objective-C++,它應該可以工作。 (你可以這樣做是獲取文件信息並更改源類型)

+0

我的文件類型設置爲Objective-C。當我將文件類型更改爲C(並選擇我的應用程序作爲活動目標)時,我確實得到相同的錯誤。但是當我將工作設置(文件類型設置爲objective-C)並將目標切換到我的LogicTests.octest時,出現此錯誤。我還得到一個「警告:沒有規則處理文件'$(PROJECT_DIR)/XPathQuery.h',類型爲sourcecode.c.h,用於架構i386。」有人有想法嗎?謝謝你的一切! – brbr 2010-03-10 22:17:25

+0

我試圖將這兩個文件(可以在http://cocoawithlove.com/2008/10using-libxml2-for-parsing-and-xpath.html找到)放入一些示例項目中。當我將其包含到iphoneUnitTests示例項目中時,遇到構建時出現同樣的錯誤。但是,當我將它們包含到沒有測試的項目中時,編譯時就不會出現這樣的錯誤。單元測試(不在設備上運行的邏輯測試)與編譯有關...是否有機會包含這些包裝文件?或者:我是否必須用方法而不是函數將它們重寫爲真正的Objective-C文件? – brbr 2010-03-11 00:27:38

1

在我的情況下,問題中的.h和.m是用正常目標構建的,而且應用程序也可以運行。

但是,在靜態庫目標下移動文件的子集後,在構建靜態庫時會出現此編譯錯誤。

被卡住了一段時間&嘗試了技術from another post here,不幸的是他們沒有幫助我的情況。

注意,僅針對的NSString *發生這種錯誤,爲例如,

  • 的extern雙常量kTimeout; //罰款
  • extern NSString * const kImageType; 「基金會/ Foundation.h」

    希望它能幫助 - //編譯錯誤

上述分析&稍微休息一下後,最終的問題是通過添加以下導入到.H解決。

相關問題