iOS - 靜態庫的導入和頭文件路徑的設置


開發過程中,免不了要用到一些第三方或者是別人寫好的一些Demo,這時就經常會用到別人寫的一些靜態庫(.a文件)和n多個頭文件(.h文件),這些文件不是簡單地把它們拉到自己的工程里面就行的,還要設置一些路徑。

在使用別人寫的東西的時候,經常會出現各種各樣變態的問題,這時最忌就是心浮氣躁,一定要靜下心來,慢慢解決。一般要經過以下步驟:

1.保證你已經把別人寫的文件全部拉到你的工程里了。因為別人的工程運行都沒問題,那你把別人寫的東西拿來用也是能用的,只是可能沒有把別人的文件全部(或者是你要用的那些)拉到自己的工程或者缺少某些配置而已,不用擔心別人的東西不能用。

2.看看別人都用了哪些庫,去到Frameworks文件里面看,如下圖 
這里寫圖片描述 
大家可能看到了有.a的文件了,着就是靜態庫,但是在此步驟里,我們先不管這些庫,我們先把除了.a以外的其它庫添加進去。具體過程如下: 
2.1點選你的工程 
這里寫圖片描述 
2.2在右邊選擇Build Phases->Link Binary With Libraries 
這里寫圖片描述 
2.3點擊下面的+號,在輸入框輸入關鍵字,再單擊你需要的庫,選擇右下角的Add即可 
這里寫圖片描述

3.現在說說頭文件路徑的設置。如下圖,我的工程里面明明是有這個文件的,卻提示我說找不到,那是因為路徑不對,它確實找不到,所以我們需要為它設置它能找到的路徑。 
這里寫圖片描述
3.1首先在桌面新建一個文件夾,我把它命名為include。然后把所有的.h的頭文件拷貝到文件夾里去。在工程里Show in Finder ,把include拷貝到工程里。 
這里寫圖片描述 
3.2然后再按住include文件夾,拖到工程里去,選擇每個分組的第一個選項,finish 
這里寫圖片描述 
3.3點擊左列表最上面的工程,再選擇右邊的Build Settings,在輸入框輸入“sea”,就可以看到下面有Search Paths->Header Search Paths 
這里寫圖片描述
3.4在工程里選擇include文件夾,Show in Finder,然后再回到Header Search Paths頁面,雙擊Header Search Paths的右邊,會彈出一個很大的輸入框
這里寫圖片描述 
3.5把步驟3.4 Show in Finder出來的include文件整個文件夾拖進輸入框,這樣頭文件的路徑就設置完了,運行一下,剛才的錯誤沒了。 
這里寫圖片描述

4.在ARC出來之后,還會出現下面的問題 
這里寫圖片描述
那是因為你的工程是支持ARC的,別人的是以前寫的,還不支持ARC。但是我們可以修改一下,使它們能互相兼容。 
4.1再次回到最左邊,選擇工程,在右邊選擇Build Phrases ,可以看到有Compile Sources選項,點開它,找到剛才報錯的文件,雙擊此文件的右邊,也會打開一個很大的輸入框,在此輸入-fno-objc-arc就行了。如果文件較多,也可以在搜索框里面輸入關鍵字搜索 
這里寫圖片描述

5.現在說一說靜態庫的導入。如果你的工程出現下面的Library not found for 
這里寫圖片描述 
這種情況,那就是缺少類庫或者類庫路徑不對的問題了,如果你確保你已經把所有除了.a以外需要的庫都按照步驟2導入了,現在就是要導入靜態庫了(.a文件)如下圖,一塊黑黑的東西 
這里寫圖片描述 
5.1在桌面上新建文件夾,我命名為lib.a。然后把所有的.a文件拷貝到lib.a文件夾,再把此文件夾拖到工程里去,和步驟3.1,3.2新建include文件夾類似。 
5.2點擊左列表最上面的工程,再選擇右邊的Build Settings,在輸入框輸入“sea”,就可以看到下面有Search Paths->Library Search Paths 
這里寫圖片描述
5.3在工程里面選擇lib.a文件夾Show in Finder ,再去到Library Search Paths頁面,雙擊此項的右邊,會彈出一個很大的輸入框,把整個lib.a文件夾拖到輸入框里去,這樣靜態庫就添加完成了,運行一下,發現錯誤消失了。 
這里寫圖片描述

附錄: 
1.Library not found for …(A) 
1.1先在工程里查找是否存在A,如果是紅色的,則刪除 
1.2如果A=AFNetworking,則在 Library Search Paths設置(有時候用coocpods導入時會發生這種情況),如下圖 
這里寫圖片描述 
1.3可能缺少某些類庫,查看官方的接入文檔說明

最后,我再次強調一下,一定要保證你已經把你需要的文件全部拖到了你的工程里面去,我在使用別人的Demo的時候就曾經深受其害,明明已經做足步驟了,總是提醒說找不到某某文件,那時還在抱怨別人的東西不能用,后來休息了一下,靜下心來。慢慢地按照系統的提示去找,發現我真的沒把那文件拖進工程,對此我對我的抱怨表示愜意。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM