2012-09-26 45 views
-1

我創建了一個使用ZXing條形碼掃描庫的iPhone項目。我使用CocoaPods添加了ZXing,當我在我的系統(Mountain Lion with Xcode 4.5(4G182))上編譯它時,它非常完美。但是,當我負責生產企業分佈,誰從我的理解還使用Xcode的相同版本,他看到下面的分析錯誤簽名的IPA的把它傳給了人編譯時:ZXBinarizer.mm中包含的文件中的非限定標識

Parse Issue 
Expected unqualified-id in file included from /The/Absolute/Path/to/Pods/ZXing/objc/src/ZXing/ZXBinarizer.mm 

突出顯示的線路是:

#import <ZXing/ZXBinarizer.h> 
     ^

我能看一下通過WebEx他的系統,我檢查了頭搜索路徑和值是顯然通過的CocoaPods配置不解決這些文件的實際位置。

當我點擊的問題導航器中的「解析問題」行,那隻能表明:

../../ZXing/objc/src/ZXing/ZXBinarizer.h 
^ 

我在網上搜索了不少的解決方案,我看到「預計大量引用unqualified-id「,但其中大多數是由於代碼格式不正確。

關於Xcode還有很多我不明白的地方,所以我希望有人會告訴我,我忽略了一些簡單的東西。

+0

我已確認此項目在兩個其他系統上都沒有問題,包括最新的Xcode和兩個都運行Mountain Lion。不幸的是,這個問題似乎只出現在那個負責簽署分發的人身上。我將在下週嘗試進行另一個遠程調試會話。任何建議將不勝感激。 – smcmahon

+1

項目構建設置的任何機會在失敗的機器上進行了調整?你能從錯誤的機器上得到錯誤文件的構建/編譯行嗎? – smparkes

回答

0

我最終不得不恢復使用CocoaPods進行依賴關係管理,只是手動包含項目。由於問題出在別人的機器上,但我自己工作得很好,所以我無法確定真正的原因。在將ZXing直接包含在我的項目中之後,他能夠編譯它。

0

發佈鏈接到正在編譯的確切代碼將有所幫助。

您可以使用clang -E來查看預處理後代碼的樣子(擴展所有#imports),然後diff您系統上的預處理輸出與同事系統上相同命令的輸出。

我在 http://code.google.com/p/zxing/source/browse/trunk/objc/src/ZXing/ZXBinarizer.h 看到他們指的是NSObject沒有#importing <Foundation/Foundation.h>第一。這是一個壞主意,但它可能不是你的實際問題。 (如果它是罪魁禍首,我會期望得到一個不同的錯誤信息。)

你是否100%確定你的同事正在將ZXBinarizer.mm編譯爲Objective-C++,而不是像普通的C++那樣編譯?

您是否100%確定Xcode不會爲您提供錯誤的任何特定文件和行信息?如果Xcode真的只是指向一條#import行,那麼你可以發佈該行前後的10行,並且該文件的前10行是#import的?

+0

他正在解壓縮他的系統上的工作區,並試圖對其進行編譯而不做任何更改。我只能假設這與他的系統有關,因爲它與CocoaPods有關。 – smcmahon

0

smcmahon,我有一個非常類似的問題,用CocoaPods構建一個iOS項目,看到那些奇怪的錯誤,並能夠找出問題。確保CocoaPods創建的符號鏈接(如ZXing/ZXBinarizer.h)確實是符號鏈接,而不僅僅是包含文件路徑的常規文本文件。

一點更詳細的解釋是在我的博客:http://www.egeek.me/2013/01/26/note-about-building-cocoapods-powered-ios-projects/

希望這會有所幫助。

相關問題