2013-10-26 109 views
0

我正在創建一個應用程序,在這裏我添加了一個第三方庫。並且我創建了一個靜態庫。因此,現在我想包括我的庫第三方庫。如果我在添加到我的應用程序之前編譯該第三方庫,它將爲兩者創建僅一個.a文件,或者我必須將我的庫.a文件與第三方一起包含在另一個示例應用程序的.a文件中。另外,如果它會創建單個.a文件什麼是.h文件,我只需要包含第三方庫.h文件或我的庫.h文件。如何在另一個靜態庫中添加一個靜態庫.a文件

+0

當我們添加我的庫作爲第三方庫的編譯時間。它只會創建一個.a文件或不。當我添加第三方庫時,我可能只需要這個編譯庫.a文件或我的庫.a文件也。 – venkat

回答

1

如果這是您要求的,靜態庫不會相互嵌套。

靜態庫只是對象文件的集合,每個對象都對應一個編譯單元(例如.m文件)。

實際上,您可以反彙編兩個靜態庫來提取所有組件對象文件,然後將它們重新組合到一個新的靜態庫中,但這不是編譯器通常所做的。

因此,假設你有一個靜態庫lib1.a,它依賴於第二個靜態庫lib2.a;您可以通過將這兩個庫與您的main函數鏈接來創建可執行文件。除非您手動「合併」這兩個庫,否則每次要使用lib1.a時,都需要鏈接lib2.a.

這可以很容易地在Xcode中檢查。

至於頭文件,你也需要包含這兩個庫的頭文件。

如果您想了解更多關於合併兩個靜態庫以創建一個包含兩個對象文件的新靜態庫的信息,請檢查thisthis

0

將一個靜態庫鏈接到另一個靜態庫時,只需將生成的組合靜態庫鏈接到應用程序。您將需要在您的應用程序中包含爲您的庫定義public接口的頭文件和用於第三方庫的頭文件頭。您的圖書館或第三方使用的任何框架都必須與應用程序鏈接。

相關問題