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


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

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[空格] [合並后的文件名]

 

再把這個生成的文件導入你的工程就可以了。

 


免責聲明!

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



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