2011-07-01 88 views
2

我已經構建了一個靜態庫(我們稱之爲A),它依賴於CFNetwork.framework,它正在xCode中成功構建。我在「鏈接二進制與庫」構建階段中包含了CFNetwork.framework。這個靜態庫有它自己的項目。不包含在二進制中的靜態庫依賴關係

出於某種原因,當嘗試在另一個項目中使用這個靜態庫(我們稱之爲B),它在連接階段失敗,抱怨CFNetwork的的符號找不到。

我添加了一個在B的目標的依賴(使A始終被B之前成功編譯),我也有加入B中的「鏈接二進制與圖書館」建設階段。

有沒有人有類似的問題?

編輯:如果我添加CFNetwork.framework到B的「鏈接二進制與圖書館」建立它成功啓動建設。

+0

我有完全相同的問題,但與MediaPlayer.framework。你有沒有找到解決方案? – Mutix

+0

是啊...如果你有一個依賴於MediaPlayer.framework的靜態庫A,你應該將MediaPlayer.framework與可執行文件(在上面的例子中,B)聯繫起來。 靜態庫不會相互「複製」 – Vicente

回答

1

是的,你還需要添加CFNetwork.framework作爲項目B的依賴。

這是設置依賴關係的正確方式。您需要在靜態庫A的發行說明中記錄對CFNetwork.framework的依賴。

絕對看看Guidelines for Creating Frameworks,特別是「什麼在你的框架包括」。您會看到Apple建議您不要創建傘架(即在分佈式靜態庫中包含CFNetwork.framework之類的東西)。

不要創建傘框架

雖然可以使用Xcode的雨傘骨架,做 所以沒有必要對大多數開發者,不建議去創造。 Apple 使用傘形框架來掩蓋操作系統中的 庫之間的一些相互依賴關係。在幾乎所有情況下,您應該是 能夠將您的代碼包含在單個標準框架包中。 或者,如果您的代碼是足夠模塊化的,則可以創建多個框架,但在這種情況下,模塊之間的依賴關係最小或不存在,因此不應保證爲其創建一個保護傘。

如果您有很多依賴關係,則值得考慮依賴關係管理工具,如Cocoapods

相關問題