Разработка OS X и Dylibs

Мне трудно понять концепцию dylibs.

В настоящее время я занимаюсь разработкой кроссплатформенной игры на C ++ с использованием нескольких внешних библиотек. С помощью графического интерфейса CMake для OSX я построил почти все свои зависимости для своей программы, включая Box2D, SFML, Thor и CEGUI (в процессе), и поместил их в определенные папки на рабочем столе. Поскольку я незнаком с этими библиотеками, я создал тестовый проект, который включает все мои зависимости с объектом soul, чтобы проверить, работают ли мои dylibs.

Вот что я понимаю о dylibs:

  • Dylibs должны быть внутри вашего пакета приложений в Frameworks папка.

  • Они должны быть связаны с вашим проектом через настройки сборки в XCode.

  • Dylibs помогает уменьшить размер приложения по сравнению со статическими библиотеками.

Имея это в виду, я поиграл с настройками и фазами сборки для моего тестового проекта и создал скрипт для каждой зависимости, который будет копировать dylibs с моего рабочего стола в Frameworks папка моего приложения каждый раз, когда я строю проект.

Приложение, включая все его функции из внешних библиотек, работает.

Единственное, что я не понимаю по этому поводу, как dylibs «уменьшает размер приложения», если мне нужно скопировать их все в свой пакет приложений? Я предполагаю, что если бы я запустил мое тестовое приложение на другом компьютере, это, вероятно, сработало бы, потому что все в комплекте приложений. Но не противоречит ли это цели дилибов?

Вот ссылка на сайт к документации по программированию динамической библиотеки Apple, с которой я ознакомился.

0

Решение

глядя на вас основные моменты

Dylibs должен находиться внутри вашего пакета приложений в папке Frameworks.

Нет, они не могут пойти в общее место, как / Библиотека / Рамочные. Если там они могут быть использованы более чем одним приложением

Они должны быть связаны с вашим проектом через настройки сборки в XCode.

да

Dylibs помогает уменьшить размер приложения по сравнению со статическими библиотеками.

Это не то, что говорится в документе. Это говорит

Использование динамических библиотек вместо статических уменьшает размер исполняемого файла приложения.

Таким образом, размер исполняемого файла (не пакета приложения) уменьшается. Если вы поместили динамический библиотека в / Library / Frameworks или аналогичный, то поделитесь им с двумя приложениями, тогда общий размер на диске этих приложений будет меньше, чем если бы вы использовали статические библиотеки.

В целом, если вы выполняете релиз через AppStore или подобный инструмент и просто запускаете .app и у вас нет подпроцессов, выигрыш в размере не будет, но вы все равно получите другие преимущества, связанные с отложенной загрузкой и т. Д. Если, тем не менее, вы запускаете подпроцесс из основного Приложение затем вы можете поделиться кодом в динамической библиотеке, экономя пространство памяти, а также объяснено в документе Apple.

Если вы устанавливаете с помощью установщика, вы можете разместить фреймворки там, где они могут быть использованы другими приложениями. например Если у вас есть два приложения и они имеют общий код, вы можете поместить его в общее место.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]