2009-10-09 67 views
2

我已經搜索了幾個小時,但我仍然不知道我的配置有什麼問題。 我的項目使用自寫的libray(myLib)。這個庫被編譯爲只爲工作模擬器,它在那裏工作得很好。iPhone庫:文件不是必需的架構

有什麼需要改變,所以它編譯爲我的iPhone設備以及?

這是我目前的警告:

ld: warning: in /.../myLib.a, file is not of required architecture 

這是我的配置(mylib.a上)

alt text http://i38.tinypic.com/kb4zdl.jpg

我發現了很多文章解釋這個錯誤的原因,但是我找不到解決方案:

模擬器在x86上運行 體系結構,而設備使用ARM架構 。


我有什麼改變,讓我的圖書館在我的iPhone的工作?

感謝


編輯:

我做了什麼至今:

  1. 清理這兩個項目
  2. 集庫(3.1)
  3. 內置的 '設備'圖書館
  4. Dra gged我的圖書館的某文件到我的應用程序

結果:

這個工作在模擬器,但活動的SDK設置設備仍然引起了file is not of required architecture錯誤。

我也試過mahboudz(感謝您的支持)link。 它解釋瞭如何使用shell腳本構建項目。 但是,XCode不斷抱怨庫文件的體系結構錯誤,並且構建失敗。

這必須是一個非常愚蠢的初學者的錯誤。

+1

什麼APPLI的配置陽離子? – Mark 2009-10-09 16:27:51

+0

應用程序具有與庫相同的配置。 (我找不到任何區別)。你需要什麼額外的信息? – jantimon 2009-10-10 12:16:51

+1

將庫引入新應用程序時,源位置是什麼? – Elfred 2009-10-13 18:27:40

回答

3

您需要添加兩個.a文件,一個爲設備(構建/ $ CONFIG-的iPhoneOS)建立和一個內置將sim(build/$ config-iphonesimulator)添加到新項目中。確保在將它們放入之前用不同的名稱命名它們。這就是admob和類似的提供它們的靜態庫的方式。

+0

我無法相信它 - 它的工作原理! – jantimon 2009-10-19 07:27:33

+0

如果您非常喜歡,可以使用lipo將這兩個文件合併爲一個universl二進制文件 – Elfred 2009-10-19 13:41:14

1

您需要爲英特爾編譯庫,以便模擬器可以使用它(我已經完成了這些工作),然後爲ARM編譯它,以便它可以在iPhone上運行。那麼你必須合併這兩個庫。有不同的方法可以實現它,或者使其更加自動化。

這裏有一些鏈接,可以幫助你:

http://blog.stormyprods.com/2008/11/using-static-libraries-with-iphone-sdk.html http://www.clintharris.net/2009/iphone-app-shared-libraries/

+0

「6)爲所有SDK目標(例如模擬器,iPhone設備等)構建新的靜態庫。」你的第一個鏈接是我的問題。我不知道該怎麼做。 – jantimon 2009-10-12 07:51:26

+0

你的第二個鏈接是關於類似的,但不是關於靜態libarys。 (除了連接到stormyprods博客) – jantimon 2009-10-12 07:58:21

+0

在項目菜單下,你的Active SDK說什麼? – mahboudz 2009-10-12 08:12:19

0

我也遇到了同樣的問題。但似乎你不需要拖動兩個.a文件到應用程序項目來解決這個問題。這是我做過什麼:

  1. 拖動靜態庫項目到應用程序項目的框架組
  2. 「獲取信息」在應用項目中的目標
  3. 設置靜態庫的直接依賴
  4. 使清潔所有不必要的構建(例如模擬器版本)的靜態庫項目
  5. 建設應用項目
相關問題