所以我在過去幾次嵌套靜態庫,但從來沒有像這樣,它導致了一些問題。複雜的靜態庫鏈接
現在讓我們假設我有3個靜態庫A,B和C.以及一個使用它們的項目,如下所示。
A是由常用自定義視圖,數據結構和類別組成的基本庫。 B是一個與A鏈接的庫,它包含幾個項目之間共享的視圖控制器。 C是與A鏈接的另一個庫,其中包含在幾個項目中共享的視圖控制器。
這個特殊的項目使用的代碼從B和C.因此,結構是這樣的:
A
/\
B C
\/
Project
而且由於Xcode的鏈接靜態庫基本上將它們合併的方式,B和C都具有A的所有符號。所以我得到了重複符號鏈接器錯誤。我該如何處理這個問題?我需要弱連結某些東西嗎?或者是否有我失蹤的特殊標誌?我是否需要設置其他感謝鏈接二進制文件的某種類型的依賴關係?
我已經搜索了一下,在這裏搜索,發現很多很好的信息,但沒有任何我能夠扭轉到這種特殊情況。在思考
更新,以便讓我問這個,因爲它似乎是讀取靜態庫,而能夠被合併真的不應該後可能的解決方案。
而不是有3個獨立的靜態庫,我應該把它們全部放在一個項目中,只有多個靜態庫目標?甚至不使用目標依賴關係,僅僅是A,AB和AC以及ABC目標,它們包含適當目標的文件和標題?這對於構建設置來說無疑是相當複雜的,並且可能會使源代碼分發有點複雜,但它可以解決我目前的問題,並且可能是更好的處理方法。 Whatcha認爲?
爲什麼'B'和'C'包含'A'的符號?這聽起來不對。 – trojanfoe
因爲它們是鏈接庫。 –
但是,如果'B'是靜態庫,'A'是靜態庫,那麼'Project'必須與'A' **和**'B'連接。換句話說'B'不包含'A'直到與二進制的最終鏈接。 – trojanfoe