2010-06-27 81 views
0

我正在嘗試構建一個調用幾個靜態庫的簡單iPhone應用程序。 但是,似乎當我包括鏈接標誌「-ObjC」和「-all_load」(因爲我需要一個庫),它會導致鏈接錯誤:-Xcode中的ObjC標誌問題

ld: duplicate symbol 
_OBJC_METACLASS_$_ASIFormDataRequest in /Users/XXXXX/Projects/AppName/Dependencies/Library1/lib1Kit.a(ASIFormDataRequest.o) and /Users/XXXXX/Projects/AppName/Dependencies/Library2/lib2Kit.a(ASIFormDataRequest.o) 

當我刪除了旗(縣條),接頭錯誤上面消失了,但我得到:

-[UIView height]: unrecognized selector sent to instance 0x13fe90 

有沒有人見過這個錯誤,它是如何與-ObjC和/或-all_load? 我很茫然,所以任何幫助,將不勝感激。

感謝, 佈雷特

回答

0

的兩個錯誤是正交的。

重複的符號錯誤是因爲您在兩個單獨的靜態庫中定義了相同的類。將其從一箇中刪除,錯誤將消失(刪除它可能會非常棘手,但沒有看到無法說明的源代碼)。

unrecognized selector錯誤是最有可能是,因爲您沒有正確管理內存並且有一個對象正在被過早釋放。運行殭屍檢測啓用,它可能會告訴你什麼對象過早釋放。更好的是,使用構建和分析構建所有代碼,並修復首先識別的內存管理錯誤。

+0

嗯......正在使用的庫已下載,所以源代碼不可用。你知道移動符號項目設置的任何技巧嗎? – Brett 2010-06-27 20:47:27

+0

更新:我通過刪除「-all_load」並添加「-force_load/full_path_to_static_library.a」來修復錯誤,足夠簡單。 – Brett 2010-06-27 21:12:47

+4

實際上,我敢打賭,「無法識別的選擇器」錯誤是由於其中一個未鏈接的靜態庫中缺少一個類別。這就是-ObjC(和3.0以後的-all_load)可能用於強制這些庫。 – 2010-06-28 15:03:12