ios工程引用,靜態庫相關

2021-07-08 09:57:44 字數 1092 閱讀 8818

首先了解一下靜態庫:

1. 靜態函式庫

這類庫的名字一般是lib***.a;利用靜態函式庫編譯成的檔案比較大,因為整個 函式庫的所有資料都會被整合進目標**中,他的優點就顯而易見了,即編譯後的執行程式不需要外部的函式庫支援,因為所有使用的函式都已經被編譯進去了。當然這也會成為他的缺點,因為如果靜態函式庫改變了,那麼你的程式必須重新編譯。

2. 動態函式庫

這類庫的名字一般是lib***.so;相對於靜態函式庫,動態函式庫在編譯的時候 並沒有被編譯進目標**中,你的程式執行到相關函式時才呼叫該函式庫裡的相應函式,因此動態函式庫所產生的可執行檔案比較小。由於函式庫沒有被整合進你的程式,而是程式執行時動態的申請並呼叫,所以程式的執行環境中必須提供相應的庫。動態函式庫的改變並不影響你的程式,所以動態函式庫的公升級比較方便。

實現方式比較簡單,建立library工程的方法可參考:

引入library工程的時候需要注意:

1.首先設定header search paths,在build settings中找到header search paths,我的路徑設定為:../mylibrary/, 選中recursive(遞迴搜尋),從你新建立的工程目錄中專案檔案找到library工程目錄, 如下圖所示:

2.引入庫檔案時使用:#import

,注意此處為尖括號,而不是引號

語法形式 操作

帶引號的形式

指示預處理器首先在包含#import語句的檔案目錄中查詢型別庫,然後在包含 (#include) 該檔案的任何檔案目錄中查詢型別庫檔案。

然後預處理器沿如下所示的路徑執行搜尋。

尖括號形式

指示預處理器沿下列路徑搜尋型別庫檔案:

path環境變數路徑列表

lib環境變數路徑列表

/i(附加包含目錄)編譯器選項指定的路徑,但該編譯器搜尋另一具有 no_registry 特性的型別庫引用的型別庫。

靜態庫引用

編譯linux多執行緒最簡單的乙個例子時,編譯時出現如下錯誤 undefined reference to pthread create undefined reference to pthread join 用man命令檢視pthread create和pthread join方法時,確實只用包括...

iOS 靜態庫 在iOS中建立靜態庫

學習了creating a static library in ios tutorial 本想做一下翻譯的工作,但是在網上已經有人翻譯過了,因此不添足。譯文請見 在ios中建立靜態庫 在實踐中,發現了一些奇怪的錯誤。根據文章編寫了程式,imagefilters,寫了指令碼生成通用靜態庫,在corei...

iOS合併靜態庫

對ios專案來說,靜態庫對於裝置 device 和模擬器 simulator 的編譯是不一樣的。需要鏈結靜態庫的工程在編譯device和simulator的時候需要區別對待。需要鏈結到不同的靜態庫。這就很麻煩。解決方法是使用lipo指令,將device靜態庫和simulator靜態庫合併為乙個靜態庫...