2011-06-12 84 views
3

我試圖學習如何在我的Xcode項目中使用this示例創建和使用靜態庫。然而,我一直geting這個錯誤:將靜態庫添加到某個項目時出錯

ld: warning: ignoring file /Developer/MathTest/iCodeBlogsMathLibrary/libICodeMathUtils.a,  
missing required architecture i386 in file 
Undefined symbols for architecture i386: 
"_OBJC_CLASS_$_MathFunctions", referenced from: 
    objc-class-ref in MathTestViewController.o 
ld: symbol(s) not found for architecture i386 
collect2: ld returned 1 exit status 

我可能會錯過什麼?

回答

5

你看起來正在建造模擬器,它對應於i386架構,但你只能連接一個iphone(手臂)庫。

爲了解決這個問題,你應該爲i386和arm編譯庫libICodeMathUtils.a。

在仔細研究了您遵循的教程之後:將靜態庫集成到項目中的更好方法是定義依賴項。你可以看看這個S.O.文章爲Xcode 4,而這個爲Xcode 3(步驟在問題本身給出)。

另一個選擇是爲i386(模擬器)和arm(設備)分別構建庫,然後使用命令行工具lipo構建一個胖庫,您可以在MathTest項目中鏈接該庫。檢查man lipo知道霍伊使用該工具。

編輯:關於你的評論

My static library does not show in Target Dependencies !!

你從所包含的項目樹的目標拖動靜態庫? Xcode 3的步驟如下:

  1. 將庫項目添加爲包含的項目;

  2. 在包含的項目中找到靜態庫並將其拖到主目標上,並將其添加爲鏈接框架;

  3. 最後,在您的目標信息窗格中,您可以添加依賴項。

Xcode4似乎能夠自動找出依賴關係,只要將目標添加到項目Scheme中即可。您可以通過執行以下操作來執行此操作:編輯方案 - >構建 - >,然後從工作區添加目標。另請參閱此S.O. question

+0

我的靜態庫並不在目標相關證明! – NSExplorer 2011-06-12 14:41:08

+0

嗨,我在回答結尾處添加了2條指示。 – sergio 2011-06-12 14:47:51

+0

看到我最新的編輯。 – sergio 2011-06-12 15:12:49

相關問題