2009-08-18 125 views
2

我的項目一直工作的很好,今天我添加了一個admob庫到我的項目,現在它不會編譯!編譯時iPhone sdk項目中奇怪的重複符號?

以下是錯誤:

ld: duplicate symbol .objc_category_name_NSCharacterSet_NSCharacterSet_Extensions in /Photo/libAdMobSimulator.a(NSCharacterSet_Extensions.o) and /Photo/build/Photo.build/Debug-iphonesimulator/Photo.build/Objects-normal/i386/NSCharacterSet_Extensions.o 

如何解決?

回答

1

你必須在這兩個libAdMobSimulator並在照片(應用程序/包),你的代碼

定義上NSCharacterSet類別NSCharacterSet_Extensions你需要確保類別名稱是獨一無二的,即重命名這些類別之一。

0

您是否使用#include代替#import的頭文件?我不確定它適用於這種情況,但這是獲取重複符號的一種方法。

2

就像後續提示:我得到了這個錯誤,因爲我已經包括了流行的touchjson庫。 admob庫帶有自己的副本,這就是爲我造成衝突的原因。從你的項目中刪除你的touchjson庫的副本,你很好去。

0

我曾經犯過這個錯誤,當我犯了一個愚蠢的錯誤,將我的.h和.m文件切換到我創建的類別中。希望這可以幫助別人做同樣的事情:)

2

我有同樣的問題,出於同樣的原因,看遍了,這是修復。

ObjC和-all_load需要位於TARGET的「其他鏈接器標誌」中。如果你遇到同樣的問題,你就會知道它,因爲當類別現在​​已經成功鏈接時,你的應用程序將不會生成,因爲有一些「重複的符號」。

當。

但等待 - 因爲JDEE指出:

i got this error as I had included the popular touchjson library. the admob library comes with its own copy

和刪除您包括TouchJSON副本確實明確了這一問題。

還是......這並不理想。我很確定那裏的TouchJSON版本很好,但我真的很想在將來能夠更新。

This guy找到了另一種解決方案,但它涉及重命名TouchJSON中使用的所有內容。不理想。

我目前處於虧損狀態,但幸運的是不會因爲快速修復而蒙受損失。不過,如果你是一個流行的靜態庫的開發人員,那麼聽到你們中的一個怪獸大腦聽到這樣的衝突會如何避免遇到這種衝突是很好的。

我正在啓動關於該主題的另一個問題。看看我們是否能夠對這些部分有所瞭解。

UPDATE:

留下您TouchJSON副本的頭文件在您的項目。刪除實現文件,那麼你將不會創建任何對象文件,那麼你將不會產生任何衝突。感謝this post about a similar conflict involving cocos2d這個最後的提示。