Скомпилировать библиотеку C как фреймворк iPhone?
Каждая библиотека C/С++ имеет некоторое количество заголовков, которые должны использоваться с этой библиотекой. И если вы используете более 1-2 библиотек, пользовательские пути заголовков являются головной болью.
Итак, я подумал: есть ли способ скомпилировать библиотеки C в качестве фреймворков. Статическая библиотека + заголовки + версии.
Я нашел в шаблоне XCode фреймворк Cocoa, но ничего не сделал о создании фреймворка iPhone. Этот простой шаг может позволить разработчикам создавать и делиться друг с другом фреймворками с помощью какого-то интересного кода.
Также было бы здорово использовать libpng, libjpeg и другие библиотеки, упакованные как фреймворки.
Я не буду использовать динамические библиотеки в этих рамках. Будет присутствовать только статическая версия.
Ответы
Ответ 1
Я комбинировал методы, которые я нашел здесь и здесь в мою библиотеку с открытым исходным кодом здесь ( ПРИМЕЧАНИЕ. С тех пор я удалил соответствующие сценарии из этого проекта. Я обновил ссылку, чтобы указать на последний вариант, включающий эти методы.). Подумайте, что в основном решение, которое вы ищете.
В принципе, у него есть цель, которая будет строить живую статическую библиотеку (липо строит для arm6, arm7 и i386). У него есть другая цель, которая берет эту библиотеку и создает ее в рамках.
Нет причин, по которым вы не можете использовать одни и те же методы для проекта C. Фактически я начал работу по переносу C анализатора VTD XML в рамки Objective C, используя те же методы.
Ответ 2
Рамки - это в основном просто пакеты динамических/разделяемых библиотек. Поскольку это не разрешено в App Store, вы должны создавать статические библиотеки и связывать их с исполняемым файлом приложения во время компиляции.
Однако, чтобы немного облегчить боль, вы можете создать проект Xcode для каждой библиотеки и скомпилировать каждую библиотеку в статическую библиотеку lib. Другой способ заключается в том, чтобы поместить все необходимые исходные файлы в основной проект Xcode и настроить его соответствующим образом, чтобы все это было создано сразу (я сделал это с небольшими библиотеками, такими как Minizip, например).
Надеюсь, что это поможет.
Ответ 3
проблема, которую вы пытаетесь сделать, уже существует - она называется DLL hell
Лучший способ - придерживаться простых старых статических библиотек при создании небольших приложений и организации структуры источников/заголовков.