Xcode下使用第三方dylib

如何使用

Use Guidelines
這是apple給出的官方使用說明,結合第一行的描述

Dynamic libraries can be loaded either when the app launches or as it runs. Libraries that are loaded at launch time are called dependent libraries. Libraries that are loaded at runtime are called dynamically loaded libraries.

由此,現(xiàn)在有兩種load的方式,第一種作為依賴load,這樣的話是在運行之前就配置好的,相當于全局的load。
其次是動態(tài)的load,在動態(tài)load時,是一個runtime的使用方式,也就是說在具體的code里面需要自己反射lib里面的方法,通過dlopen等api來加載lib,調用方法。

具體的參考Use Guidelines

不過,一般我們都會優(yōu)先考慮使用全局的方式load,那么此時如何讓項目自動load?

  1. 在build phase里進行copy 動作,將我么需要的lib文件copy到響應的目錄下,如framework
  2. 在最終build出來的執(zhí)行文件,使用otool查看lib的加載信息,然后使用install name tool來修改具體的加載路徑
    這里可以參考stackoverflow的具體問題,最佳答案有詳細步驟
  3. 需要注意的是,在現(xiàn)在使用了instal name tool之后,這個項目中的這個install后的相關lib屬性就已經保存到了項目生成的binary文件中,無論copy到何處都是保留了這個配置信息的
  4. 具體問題中我們看到了類似,@executable_path的寫法,這是系統(tǒng)保留的動態(tài)獲取路徑的方法,詳細使用可以參考動態(tài)路徑,其中涉及
  • @rpath
  • @loader_path
  • @executable_path
    他們的具體含義,用到的繼續(xù)學習吧

PS:
在本次項目調試中發(fā)現(xiàn),直接使用xcode的run,那么xcode會自動將引入的全局加載方式的lib文件install到當前product所在的目錄,與生成的product平級。從而只要我們在build phase copy這個lib文件到product directory,

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 僅以方便自己查閱記錄前言1.靜態(tài)庫和動態(tài)庫有什么異同?靜態(tài)庫:鏈接時完整地拷貝至可執(zhí)行文件中,被多次使用就有多份冗...
    190CM閱讀 4,521評論 0 4
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,008評論 25 709
  • 靜態(tài)庫與動態(tài)庫的區(qū)別 首先來看什么是庫,庫(Library)說白了就是一段編譯好的二進制代碼,加上頭文件就可以供別...
    吃瓜群眾呀閱讀 12,331評論 3 42
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,272評論 6 342
  • 你愛自己嗎?很多人都回答“愛”可當有些事情同時出現(xiàn)的時候,你是否還是愛自己。今天一大早,身體稍微有點不舒服,其實這...
    榮涵閱讀 273評論 0 1

友情鏈接更多精彩內容