一,xcode編譯出現link錯誤,出現"duplicate symbols for architecture i386 clang"提示.
問題:鏈結時,專案有重名檔案.
解決:根據錯誤提示,做如下檢查:
1.taraget->build settings->link binary with libraries檢查是否有重複lib.
2.全工程搜尋下重名檔案,決定如何刪除.
二,關於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.
三,編譯warning:ld: warning: directory not found for option '-l'.
問題:通常是path問題.
解決:taraget->build settings->library search paths 和 framework search paths,刪掉編譯報warning的路徑即ok
四,引入(帶原始碼的)靜態庫所需配置.
步驟: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->配上靜態庫的物理路徑.
[錯誤tips: 若出現加入的.xcodeproj無法展開,則在xcode中關閉靜態庫專案即可]
ps:只有.a 和 .h的靜態庫,則直接拖入專案即可。
五,關於重構,解決跨層呼叫問題,
常用選擇:
1.傳參(包括靜態變數的使用)
2.傳**
3.直接移動呼叫的**(若**出現在不適合的地方,移動類/方法/etc)
Xcode 之自己編譯靜態庫
今天介紹下,如何利用xcode,新建乙個靜態庫,以及如何編譯成i386 armv7 armv7s 等平台架構。開發環境 mac os x 10.9.4 xcode 5.0.2 一 新建靜態庫 1,開啟xcode,create a new xcode project framework library...
Xcode 之自己編譯靜態庫
今天介紹下,如何利用xcode,新建乙個靜態庫,以及如何編譯成i386 armv7 armv7s 等平台架構。開發環境 mac os x 10.9.4 xcode 5.0.2 一 新建靜態庫 1,開啟xcode,create a new xcode project framework library...
Xcode 之自己編譯靜態庫
今天介紹下,如何利用xcode,新建乙個靜態庫,以及如何編譯成i386 armv7 armv7s 等平台架構。開發環境 mac os x 10.9.4 xcode 5.0.2 一 新建靜態庫 1,開啟xcode,create a new xcode project framework library...