2012-07-25 197 views
5

我已經做了一些環視,但我發現的大部分答案都已經或者感覺不完整,並且讓我有點困惑。我得到一個C庫,我需要使用XCode 4.3編譯成一個靜態庫,然後在一個單獨的iOS應用項目中使用,但我不確定如何繼續。我不知道如果目錄結構的問題或沒有,但在這裏它是反正:XCode 4.3:靜態庫生成

Library -> Section1 -> src -> .c files 
        -> sec1 -> .h files 
        -> sec1.h 
     -> Section2 -> src -> .c files 
        -> sec2 -> .h files 
        -> sec2.h 

我一直在試圖從這個工作:http://blog.stormyprods.com/2008/11/using-static-libraries-with-iphone-sdk.html這是在與此類似,雖然不是一個問題掛鉤2008年相當過時,我也無法得到它的工作。還有一個問題:Including external C library with Xcode,但沒有詳細介紹實際生成庫的細節,然後包括在單獨的項目中。

如果有人能夠提供一個清晰的最新答案,我和其他許多人都會非常感謝,我相信。讓我知道是否需要更多信息!

回答

7

要建立靜態庫:

  1. 在Xcode中創建一個靜態庫項目
  2. 添加所有的.c和.h文件到項目
  3. 編譯

最簡單的然後使用這個庫的方法是將這個靜態庫項目添加到你的應用程序項目中。這避免了不必擔心創建胖庫(即模擬器和設備均具有代碼的庫)。

要靜態庫項目添加到您的應用程序項目:

  1. 選擇文件>將文件添加到「」 ...
  2. 添加.xcodeproj您的靜態庫
  3. 點擊您的應用.xcodeproj在Project Navigator中顯示構建選項
  4. 單擊您的應用程序的目標並選擇「Build Phases」選項卡。
  5. 展開「鏈路與二進制節」
  6. 點擊「+」按鈕
  7. 展開「工作區」一節(你應該看到你的圖書館,某文件,有)
  8. 點擊您的圖書館你應該很好走。

上面的詳細程度令人難以忍受的道歉,但不知何故人們似乎總是忘記做步驟4-8,然後他們想知道他們爲什麼會出現鏈接錯誤!

Xcode將無法找到您的庫的標題。您可以像添加其他頭文件一樣將公共標題添加到項目中,也可以在構建設置中設置「標題搜索路徑」。

+1

非常感謝您的詳細解答!我遇到了大量的錯誤,所以我可能錯過了其他的東西,我創建了一個iOS Cocoa Touch靜態庫,然後添加了這些文件,修復了頭文件引用錯誤,我是否需要將編譯語言更改爲C地方?我認爲它不只是知道,是嗎? – 2012-07-25 21:17:07

+1

Xcode(或clang)根據文件擴展名默認選擇語言。例如。 .c for C,.cc for C++,.m for ObjC和.mm for ObjC++。 – Arne 2012-07-25 21:21:15

+0

@KarolyS As Arne(+1)表示只要你的文件名以.c結尾,你就不需要做任何特殊的事情,但這並不意味着你沒有一些工作要做......這一切都取決於原代碼是爲什麼平臺編寫的。如果它是一些UNIX的味道,它不應該太糟糕,如果它是Windows,它可能更具挑戰性。有一點需要注意的是代碼可能希望確定平臺(例如POSIX)的#define。 – idz 2012-07-25 22:54:44

0

嘗試通用框架項目,如在github上看到的:https://github.com/kstenerud/iOS-Universal-Framework/。我廣泛使用了它,它很好地工作。您只需爲該庫創建一個新的XCode項目,放入所有源代碼和頭文件,然後構建一個靜態框架。您可以在其他項目中使用,也不必擔心標題搜索路徑。

+0

它不適用於iOS 8 – codesnooker 2014-09-29 18:09:31