Обтекание статической библиотеки в Cocoa Touch Framework
У меня есть статическая статическая библиотека с двумя средами архитектуры (armv7, arm64).
Я пытаюсь заставить его работать с быстрым и обернуть его в Cocoa Touch Framework.
Что я делаю:
- Создать проект Cocoa Touch Framework
- Перетащите статическую библиотеку с заголовками
- Установите
OTHER_LDFLAGS
в -all_load
- Установите
ONLY_ACTIVE_ARCH
в NO
- Установите
VALID_ARCHS
и ARCHS
в armv7
и arm64
- Сборка с конфигурацией сборки релиза
- Захватите файл .framework из DerivedData/../../Продукты/
Когда я поместил эту .framework в мой быстрый проект, добавьте раздел Embedded Binaries в мои общие настройки цели, импортируйте фреймворк и используйте один из его классов, я получаю undefined symbols for architecture arm64
или undefined symbols for architecture armv7
.
EDIT:
Не уверен, что это помогает, но я заметил, что размер статической библиотеки составляет около 34 МБ, но размер сгенерированного .framework составляет около 12 МБ.
ИЗМЕНИТЬ 2:
Я запускал nm -arch arm64 -g myLibraryName
как в статической библиотеке, так и в сгенерированной динамической библиотеке. Динамическая библиотека не содержит всех символов, которые имеет статическая библиотека. Кажется, что процесс сборки XCode разбивает многие из них.
Ответы
Ответ 1
Думаю, вы также забыли добавить:
Проект → Цель → Фазы сборки → Ссылка на двоичные файлы с библиотеками.
add + the: libz.dylib
или libz.tbd
(Так как Xcode 7, файлы *.dylib
являются now *.tbd
файлами)
Обязательно также очистите папку: /User/yourname/Library/Developer/XCode/DerivedData
P.S: Если вы хотите, вы также можете добавить libz.tbd
из "Другие флаги компоновщика" в Настройки сборки, добавив аргумент -lz.