簡體   English   中英

OS X開發和Dylibs

[英]OS X Development And Dylibs

我很難掌握dylibs的概念。

我目前正在使用多個外部dylib開發一個C ++的跨平台游戲。 使用OSX上的CMake GUI,我為我的程序構建了幾乎所有的依賴項,包括Box2D,SFML,Thor和CEGUI(進行中),並將它們放在桌面上的特定文件夾中。 由於我不熟悉這些庫,因此我創建了一個測試項目,其中包含了所有依賴於soul objectif的依賴項,以驗證我的dylib是否有效。

這是我對dylibs的理解:

  • Dylib需要位於Frameworks文件夾中的應用程序包中。

  • 它們需要通過XCode中的構建設置鏈接到您的項目中。

  • 與靜態庫相比,Dylibs有助於減小應用程序的大小。

考慮到這一點,我使用了測試項目的設置和構建階段,並為每個依賴項創建了一個腳本,每次構建項目時,都會將桌面上的dylib復制到我的應用程序包的Frameworks文件夾中。

該應用程序,包括外部庫的所有功能,都可以使用。

我唯一不明白的是,如果我需要將所有這些復制到我的應用程序包中,dylibs如何“減小應用程序的大小”? 我猜測如果要在另一台計算機上運行我的測試應用程序,它可能會起作用,因為所有內容都在應用程序包中。 但這與dylibs的目標並不矛盾嗎?

這是我咨詢過的Apple動態庫編程文檔的鏈接

看着你的要點

Dylib需要位於Frameworks文件夾中的應用程序包中。

不,他們不會去像/ Library / Frameworks這樣的公共場所。 如果有,它們可以被多個應用程序使用

它們需要通過XCode中的構建設置鏈接到您的項目中。

與靜態庫相比,Dylibs有助於減小應用程序的大小。

這不是文件所說的。 它說

使用動態庫而不是靜態庫會減少應用程序的可執行文件大小。

因此減少了可執行文件(不是應用程序包)的大小。 如果您已在/ Library / Frameworks或類似物中放置動態庫,然后在兩個應用程序之間共享它,那么這些應用程序的磁盤上的總大小將小於使用靜態庫時的大小。

一般情況下,如果您通過AppStore或類似版本發布並且只運行.app並且沒有子進程,那么沒有大小優勢,但您仍然可以獲得延遲加載等其他好處。但是,如果您確實從主要運行子進程應用程序然后您可以在動態庫中共享代碼,節省內存空間以及Apple的文檔中解釋。

如果您通過安裝程序進行安裝,則可以將框架放置在可以共享的位置,以供其他應用程序使用。 例如,如果您有兩個應用程序並且它們具有公共代碼,則可以將其放在共享位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM