iOS開發(fā) 經(jīng)典錯誤之 library not found for -xxxl 或'xxx.h'file not found

第一種情況庫報錯:library not found for -xxxl

開發(fā)中我們經(jīng)常會遇到ibrary not found for -xxxl,尤其是我們從遠程倉庫或者github clone下來一個項目,編譯很有可能報這個錯誤。如下圖:


image.png

library not found for - lXXX 屬于iOS常見錯誤之一 ,lXXX中的l是library(庫)的簡寫。
這種錯誤一般都是沒有配置Library Search Paths 或 沒有正確配置Library Search Paths導致報錯所致。
解決辦法:只要正確配置Library所在的準確路徑即可。

關于Library Search Paths添加路徑想說兩點
1.如果我們指定的目錄和靜態(tài)庫的目錄完全不相關,直接到Library Search Paths下添加報錯 靜態(tài)庫的準確磁盤路徑
2.如果我們指定的目錄和靜態(tài)庫的目錄有關系。即,我們指定的目錄是靜態(tài)庫所在目錄的上級目錄,或者是上上級目錄。這種情況下,無需指定靜態(tài)庫的精確的路徑,只需要把non-recursive選項修改為recursive 即可

注:recursive選項代表在我們指定的目錄下遞歸搜索靜態(tài)庫。即,如果在當前目錄沒有搜索到靜態(tài)庫,那么就去當前目錄的子目錄下繼續(xù)搜索。默認情況下是non-recursive(非遞歸的)

第二種情況頭文件報錯: xxx.h file not found

上面講的是當我們項目導入的是.a靜態(tài)庫,但因為沒有在 Library Search Paths 中配置.a靜態(tài)庫的search路徑,或者是雖然配置了路徑但是路徑配置錯誤而導致出現(xiàn)library not found for -xxx錯誤的解決辦法。
但我們知道,在iOS中,靜態(tài)庫有兩種形式:.a格式的靜態(tài)庫和.framework格式的靜態(tài)庫。
那么如果我們的項目中引入了.framework格式的靜態(tài)庫要不要配置search路徑呢?答案是肯定的,無論我們以什么方式導入.framework靜態(tài)庫(cocoapods的方式或者直接把framework靜態(tài)庫拖拽到項目中的方式),如果沒有配置framework的search路徑,同樣會報錯,但報的錯誤卻是和.a格式的靜態(tài)庫有些不同,如果我們項目中引入了framework格式靜態(tài)庫也使用了靜態(tài)庫(所謂使用就是import了framework靜態(tài)庫中的某個頭文件),但沒有配置search路徑,那么就會報 xxx.h file not found 這類錯誤

如果我們確認設置了了build setting -> Framework Search Paths的路徑后還是報錯xxx.h file not found,那就需要配置build setting -> header search paths的路徑
"$(SRCROOT)/Utils/RSAEncrypt(加密)/openssl"
這個路徑的意思就是openssl類庫在項目中所處的位置,然后加入到這里來,后面選擇non-recursive即可

總結(jié):關于 library not found for -xxxl 或'xxx.h'file not found這個問題 一般都是路徑?jīng)]配置,或路徑不正確所致

我們需要做的就是
1.先檢查一下 Build Phases - >Link Binary With Libraries ,對應的靜態(tài)庫有沒有添加成功。
2.在Build Settings下,搜索search ,找到Framework Search Paths、Header Search Paths 、Library Search Paths查看對應的第三方庫路徑是否存在,不存在就添加
3.Command + Shift + K,重新編譯即可。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容