2012-03-17 105 views
7

我需要爲我正在開發的項目創建一個框架(需要一個靜態庫)。我使用this tutorial來創建框架,然後將靜態庫複製到項目中並工作。在iOS中的動態框架中包含一個靜態庫

但是,當我把框架拖到一個iOS項目時,它顯示了很多錯誤。

`Undefined symbols for architecture i386:"_OBJC_CLASS_$_SomeClassFromTheStaticLibrary",referenced from:_OBJC_CLASS_$_AnotherClass in MyFramework` 

我認爲正在發生的是,iOS的項目要重新編譯的框架,它不能,因爲它不能找到靜態庫。 如果我將靜態庫添加到iOS項目,所有錯誤消失。這是我想要避免的。

基本上我想要iOS項目 - >框架 - >庫,而不是在項目和框架中都有庫。

我已經嘗試添加靜態庫作爲框架中的資源,但它沒有工作。

+0

任何解決方案,你的問題老兄?我在這裏面臨類似的問題.. – 2012-04-02 07:47:43

+0

我確實解決了它,但我有點被騙。我可以訪問所有三個項目的源代碼,所以我重新編譯了靜態庫作爲框架。 這樣我有iOS項目 - >框架 - >框架,只需要導入一個框架。 – OlivaresF 2012-04-04 22:01:28

+0

沒有真正的解決方案呢?我甚至無法擺脫這個問題,如果我將靜態庫包含到iOS項目中... – b00tsy 2012-04-12 19:31:40

回答

0

我懷疑這是可能的。當你想到發生的事情時,你會看到問題。

  1. 框架編譯和靜態庫處理,使之類的額外的符號被剝離出來
  2. 該應用現已編制和反對的框架可能會或可能不會有符號的應用程序鏈接是需要

如果只有框架使用靜態庫(邏輯),但我無法找到跨應用程序共享代碼的代碼,我確實得到了這個工作。

-2

我跟着這個link創建自定義框架。我在我的框架中有靜態庫,它可以正常工作。

爲了我的理解,我已經複製了他的步驟my blog以及一個使其具有通用性的腳本。

+0

你在哪裏有你的靜態庫?你是否在構建階段標籤中鏈接了它們? – OlivaresF 2012-03-17 17:59:17

0

如果符號是隱藏的(或者通過由默認/ GCC_SYMBOLS_PRIVATE_EXTERN隱藏設定爲YES__attribute__ ((visibility ("hidden")))被施加到某些符號的符號),則該符號將是可利用時靜態鏈接庫中,但不是在動態鏈接框架。

確保靜態庫的符號不隱藏,並且您應該能夠從您的應用程序訪問它們。

相關問題