Xcode添加靜態庫以及編譯選項配置常見問題

Xcode添加靜態庫以及編譯選項配置常見問題


一,Xcode編譯出現Link錯誤,出現"duplicate symbols for architecture i386 clang"提示.
問題:連接時,項目有重名文件.
解決:
根據錯誤提示,作以下檢查:
1.Taraget->Build Settings->Link Binary With Libraries檢查是否有重複lib.
2.全工程搜索下重名文件,決定如何刪除.html

二,關於Category位於靜態庫時,引用該靜態庫的工程使用Category,出現"unrecognized selector sent to class"提示.
問題:標準UNIX靜態庫與Objective-C之間Linker的差別.在標準的UNIX靜態庫內,linker symbol是依照每個類別而產生的,但因爲Category並無真正產生一個類別,因此出錯.
解決:
1.在該靜態庫的Taraget->Build Settings->Other Linker Flags->加上 -ObjC.
2.在使用該靜態庫的工程Taraget->Build Settings->Other Linker Flags->加上-all_load或-force_load.xcode

三,編譯warning:ld: warning: directory not found for option '-L'.
問題:一般是Path問題.
解決:
Taraget->Build Settings->Library Search Paths 和 Framework Search Paths,刪掉編譯報warning的路徑即OKui

四,引入(帶源碼的)靜態庫所需配置.
步驟:
1.Add Files to.. 加入靜態庫的.xcodeproj 文件,不要勾選Copy Items.. 選項。(能夠先把源代碼項目先複製到使用項目文件夾下)
2.Target->Build Phases->Target Dependecies->加靜態庫 && Link Binary With Libraries->加靜態庫.
3.配置靜態庫頭文件路徑,在Taraget->Build Settings->User Header Search Paths->配上靜態庫的物理路徑.spa

[錯誤tips: 若出現加入的.xcodeproj沒法展開,則在Xcode中關閉靜態庫項目便可]code

PS:只有.a 和 .h的靜態庫,則直接拖入項目便可。htm

五,關於重構,解決跨層調用問題,
經常使用選擇:
1.傳參(包括靜態變量的使用)
2.傳回調
3.直接移動調用的代碼(若代碼出如今不適合的地方,移動類/方法/etc)blog

相關文章
相關標籤/搜索