Скомпилировать библиотеку 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

Лучший способ - придерживаться простых старых статических библиотек при создании небольших приложений и организации структуры источников/заголовков.