1. 程式人生 > >swift 徹底解決_OBJC_CLASS_$_某檔名", referenced from:問題

swift 徹底解決_OBJC_CLASS_$_某檔名", referenced from:問題

最近在使用靜態庫時,總是出現這個問題。下面總結一下我得解決方法:

1. .m檔案沒有匯入   
在Build Phases裡的Compile Sources 中新增報錯的檔案

bubuko.com,布布扣

2. .framework檔案沒有匯入
靜態庫編譯時往往需要一些庫的支援,檢視你是否有沒有匯入的庫檔案
同樣是在Build Phases裡的Link Binary With Libraries中新增

bubuko.com,布布扣

3. 重複編譯,可能你之前複製過兩個地方,在這裡新增過兩次,刪除時系統沒有預設刪除編譯引用地址
在Build Settings裡搜尋Search Paths  將裡面Library Search Paths 中沒有用到的地址刪除

bubuko.com,布布扣

4. 最後一個問題,出在靜態庫生成上面。系統編譯生成的靜態庫有兩個,一個真機呼叫的,一個模擬器呼叫的。
當你在真機測試時匯入模擬器靜態庫,執行就會報錯;同樣在模擬器測試時呼叫真機靜態庫也會報錯。

解決這一問題也很簡單,就是將兩個靜態庫合併,生成一個相容的靜態庫。

通過Show in finder 找到兩個靜態庫檔案,將兩個檔案複製到一個資料夾裡,當然要進行重新命名啦,否則就覆蓋了。
下面開啟終端,CD到存放兩個檔案的資料夾。
通過lipo[空格]-create[空格] [真機靜態庫檔名][空格] [模擬器靜態庫檔名][空格]-output[空格] [合併後的檔名]

bubuko.com,布布扣

再把這個生成的檔案匯入你的工程就可以了。