2010-12-01 67 views
7

如果您爲iOS創建一個靜態庫,您是否必須使用它來分發頭文件,或者有另一種方法來使它工作?爲iOS創建一個靜態庫和分發模擬器

目前我的設備和模擬器都有一個my_lib.a文件,但是當我將它拖入另一個測試應用程序以使用它時,它說它無法找到標題,並且我使用它的所有地方在代碼中未聲明。所以我想我要麼做錯了什麼,要麼我必須發送適當的頭文件。

背景我的過程:

我見過兩個指南用於創建器件和模擬器靜態庫。其中關於這個網站:Build fat static library (device + simulator) using Xcode and SDK 4+

和一個在這裏:http://mark.aufflick.com/blog/2010/11/19/making-a-fat-static-library-for-ios-device-and-simulator

我使用的第二個站點,只是嘗試一下。如果我做得正確,我也有點好奇。我剛進入Release-iphone(os | simulator)文件夾,並在模擬器中找到了.a和i.o中的.o。

回答

3

簡短的回答是肯定的,你必須打包你的靜態庫的頭文件。實際上,您必須將任何庫的頭文件打包爲動態或靜態。庫本身包含已編譯的代碼,但是您仍然必須告訴編譯器庫中的標識符,以便在編譯代碼時知道它們存在。

如果你在意,你可以將你的靜態庫打包成一個靜態的框架,並稍加小心。您只需使用.a文件替代.dylib(或.so)文件,即可創建與動態框架相同的目錄結構。框架包含標題目錄,因此您可以將二進制文件和標題作爲單個包分發,並且您可以輕鬆地從框架中導入標題,而不會混淆其他標題搜索路徑構建設置。

+0

感謝您的信息亞當。據我瞭解(以及我所搜索的),開發者不允許爲iOS創建框架。這不再是如此,如果是這樣,你有沒有關於如何創建這個框架的資源?最後,我正確地創建我的通用庫嗎?我只問,因爲我使用的指南(第二鏈接)沒有提及.o文件。 – Aaron 2010-12-02 16:02:57

0

爲了防萬一它很有用 - 我遵循了Ray Wenderlich的here指令,並且能夠生成支持多種體系結構(包括模擬器)的iOS框架。說明有點太長,只能在這裏複製粘貼。