最近遇到兩個狀況
- link 執行檔時, 找不到 static library 內用的 symbol
- link 執行檔時, 找不到 Core Data 用的 schema (*.momd)
重新回憶《解決 undefined symbol / reference》, 想到 Mac OS/iOS 也是和 Linux 類似的架構, 原理應該一樣。上網搜了相關文章, 得到以下的解法:
- static library 只能含有 object file, target 為 static library 的時候, 設定 Build Phases 裡的 Link Binary With Libraries 沒有意義。應該要設 application target 的 Link Binary With Libraries, 因為是建立 application (unit test, etc) 時才會 link libraries
- 同上, static library 不能含有其它 resource file, 要放在其它 target 的 bundle 裡, 然後 static library 裡的程式讀另外的 bundle。
參考資料:
如果一個 static library project A 要做 logic unit test,但 A 會用到另一個 static library project B 裡面的功能,那麼 static library Build Phases 的 Link Binary With Libraries 是否要把 B 引入呢
回覆刪除