Связывание динамической библиотеки в статической структуре
Я строю статическую платформу iOS на нескольких библиотеках в XCode. Один из них должен быть card.io. Я не могу использовать Cocoapods или Карфаген. До сих пор я импортировал.frameworks в.framework, и он работает довольно хорошо. Однако card.io использует статическую библиотеку (файл.a) с кучей заголовков. Это хорошо работает в динамическом типе.frameworks (или проекте приложения iOS), но в статическом проекте я получаю следующие ошибки при включении файлов.a:
error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: can't locate file for: -lCardIO
error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file: -lCardIO is not an object file (not allowed in a library)
error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: can't locate file for: -lopencv_core
error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file: -lopencv_core is not an object file (not allowed in a library)
error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: can't locate file for: -lopencv_imgproc
error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file: -lopencv_imgproc is not an object file (not allowed in a library)
Что касается этих ошибок, я скачал исходные коды card.io и похоже, что есть динамическая цель.framework, ожидающая сборки. Я попытался использовать этот файл вместо файлов.a и заголовков - так что мой проект по крайней мере можно собрать. Поскольку card.io не содержит архитектуры для симулятора (что, кстати, должно быть в этом выпуске 5.2.2), я не могу проверить его в модульных тестах, поэтому, когда я тестирую это решение на устройстве, я получаю эту ошибку:
dyld: Library not loaded: @rpath/CardIO.framework/CardIO
Referenced from: /var/containers/Bundle/Application/55D3AF7F-83F4-4B3D-A667-0FCO93CCC441/App/AppDemo
Reason: no suitable image found.
Пока мои знания + google + stackru застряли здесь, потому что похоже, что xcode не поддерживает.framework в.framework таким образом.
К этому моменту я провел два дня с этой "проблемой", поэтому вопрос таков: существует ли какое-либо решение для включения динамической библиотеки в статический каркас? Или любое решение для включения card.io в статические рамки?
РЕДАКТИРОВАТЬ:
Ну, на самом деле решение было более глупым, чем я думал (как всегда). Просто для включения card.io в.framework перейдите в "Описание проекта -> Настройки сборки -> Пути поиска в библиотеке" и введите путь, по которому xcode должен искать библиотеки. Этот подход решает первую проблему этого поста - это означает реализацию библиотек.a и заголовков. На данный момент я не могу гарантировать, что он будет работать в выпусках, основанных на моей платформе, поэтому я обновлю этот пост, чтобы подтвердить его позже. Я надеюсь, что это помогает кому-то...