當前位置:首頁 » 文件管理 » 靜態庫可以包含頭文件嗎
擴展閱讀
可以馴化動物原始人游戲 2025-05-18 04:06:20
qq里可以打字的圖片 2025-05-18 03:53:44

靜態庫可以包含頭文件嗎

發布時間: 2023-03-03 21:42:43

⑴ iOS封裝FrameWork靜態庫

1.Framework是資源的集合,將靜態庫和其頭文件包含到一個結構中,讓Xcode可以方便地把它納入到你的項目中。
靜態庫:鏈接時完整地拷貝至可執行文件中,被多次使用就有多份冗餘拷貝;例如 .a和.framework

2.動態庫:鏈接時不復制,程序運行時由系統動態載入到內存,供程序調用,系統只載入一次,多個程序共用,節省內存;例如:.dylib和.framework
系統的.framework是動態庫,我們自己建立的.framework是靜態庫。

.a與.framework的區別:
.a是一個純二進制文件,.framework中除了有二進制文件之外還有資源文件。
.a文件不能直接使用,至少要有.h文件配合,.framework文件可以直接使用。
.a + .h + sourceFile = .framework。

將Mach-O Type設為Static Library, framework可以是動態庫也可以是靜態庫,對於系統的framework是動態庫,而用戶製作的framework只能是靜態庫。

Build Active Architecture Only修改為NO,否則生成的靜態庫就只支持當前選擇設備的架構;
iOS Deployment Target ,靜態庫需要支持的最低版本號,要小於等於主項目的版本號;
Valid Architecture 支持的iOS的CPU框架;

將你要公開的頭文件拖至Public下,要隱藏的放在Private或者Project下,當然,隱藏的頭文件就無法再被引用。

分別在模擬器和真機設備下編譯,生成兩個WSLFramework.framework文件,然後把兩個WSLFramework.framework文件中的WSLFramework用命令合成一個,和.a的文件合成命令一樣(lipo -create +上面兩個文件的路徑 + -output + 合成後文件的輸出路徑 )

命令執行完後,輸出路徑下的WSLFramework就是你合並後的文件,將這個文件名字改成和你未合並之前的一樣,放到Debug-iphoneos(真機)目錄下WSLFramework.framework文件夾下,替換掉原來的WSLFramework文件;此時就可以把當前WSLFramework.framework文件拿出來了,他就是最後生成的framework文件。