2014-04-25 75 views
4

在我的iOS XCode項目中,我使用了來自第三方的外部非開源庫。 現在我想通過cocoapods將AFNetworking添加到我的項目中。 當我這樣做,我得到的錯誤的多個像這樣的:外部框架中的重複符號

duplicate symbol _OBJC_METACLASS_$_AFImageCache in: 
    /Path/to/framework(UIImageView+AFNetworking.o) 
    /Path/to/DerivedData/Build/Products/Debug-iphonesimulator/libPods.a(UIImageView+AFNetworking.o) 

63 duplicate symbols for architecture i386 

它接縫,該庫也使用AFNetworking並通過阻止我使用它。有沒有辦法解決這個問題(除了不使用其他框架,這不是一種選擇)?


編輯

我設法移除做類似的東西this其他框架AFNetworking。但是現在框架沒有找到來自cocoapods的AFNetworking,我得到了Undefined symbols for architecture i386

有沒有辦法告訴框架在哪裏可以找到AFNetworking?

+0

將您的Podfile發佈到此處。也許即使你的Podfile.lock,因爲它聽起來像你使用非公開的規格。 –

+0

我的podfile基本上就是'pod'AFNetworking''。我不會通過cocoapods加載其他框架,所以我實際上不認爲它與cocoapods有任何關係,或者它沒有? – Jochen

+0

重複的符號表示通常意味着您有多個具有相同名稱的類正在加載。如果您認爲這是CocoaPods中的錯誤,請提交一份報告[https://github.com/CocoaPods/CocoaPods] –

回答

2

無法從同一個項目中的兩個不同位置加載同一個庫。這是Objective-C的限制,而不是CocoaPods。有關更多詳細信息,請閱讀this answer

主要是爲了解決這個問題,你只能在一個地方包含AFNetworking。將其他依賴移動到CocoaPods可以幫助你做到這一點,假設鏈接答案中討論的版本沒有衝突。