XCode 編譯連結 static library 的注意事項

最近遇到兩個狀況

  • 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。

參考資料:

留言

  1. 如果一個 static library project A 要做 logic unit test,但 A 會用到另一個 static library project B 裡面的功能,那麼 static library Build Phases 的 Link Binary With Libraries 是否要把 B 引入呢

    回覆刪除

張貼留言

這個網誌中的熱門文章

(C/C++ ) 如何在 Linux 上使用自行編譯的第三方函式庫

熟悉系統工具好處多多

virtualbox 使用 USB 裝置