最近在使用靜態庫時,總是出現這個問題。下面總結一下我得解決方法:
1. .m文件沒有導入
在Build Phases里的Compile Sources 中添加報錯的文件
2. .framework文件沒有導入
靜態庫編譯時往往需要一些庫的支持,查看你是否有沒有導入的庫文件
同樣是在Build Phases里的Link Binary With Libraries中添加
3. 重復編譯,可能你之前復制過兩個地方,在這里添加過兩次,刪除時系統沒有默認刪除編譯引用地址
在Build Settings里搜索Search Paths 將里面Library Search Paths 中沒有用到的地址刪除
4. 最后一個問題,出在靜態庫生成上面。系統編譯生成的靜態庫有兩個,一個真機調用的,一個模擬器調用的。
當你在真機測試時導入模擬器靜態庫,運行就會報錯;同樣在模擬器測試時調用真機靜態庫也會報錯。
解決這一問題也很簡單,就是將兩個靜態庫合並,生成一個兼容的靜態庫。
通過Show in finder 找到兩個靜態庫文件,將兩個文件復制到一個文件夾里,當然要進行重命名啦,否則就覆蓋了。
下面打開終端,CD到存放兩個文件的文件夾。
通過lipo[空格]-create[空格] [真機靜態庫文件名][空格] [模擬器靜態庫文件名][空格]-output[空格] [合並后的文件名]
再把這個生成的文件導入你的工程就可以了。