我已經構建了一個靜態庫,我是我的iOS二進制文件鏈接的代碼剝離已關閉等靜態庫,我可以看到符號在檔案中(通過nm)。保持Xcode從靜態庫中剝離出未使用的符號
因此,我將該庫作爲框架鏈接到我的應用程序中。但是,我並不直接調用該函數。因此,我可以直接看到我在二進制文件中調用的符號,但不能調用那些未調用的符號。但是,因爲我實際上希望這些符號在運行時存在,所以我正在使用-all_load進行編譯。
但是,這似乎給圖書館的用戶帶來了不必要的負擔。有什麼我可以添加在靜態庫中,強制執行此操作,而不是依賴庫的用戶?
也許你可以舉一個例子說明你爲什麼需要整個庫加載?有很多方法可以讓鏈接器做你想做的事情(其中一些非常簡單),但可能會有更優雅的解決方案來解決你的問題。 –
我想註冊組件來處理某些類型。我的庫有一些標準類型的標準組件。客戶可以爲其特定類型創建更多組件並註冊它們。 每個組件只是註冊自己來處理一個類型。所以,當它被「加載」(通過+ load或__attribute __((構造函數)))時,它會註冊自己。但是,在靜態庫中,由於沒有明確調用組件的代碼,所以組件永遠不會實際註冊自己。 – Masa