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

2022-03-09 23:48:27 字數 1278 閱讀 1771

一,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...