У меня есть кодовая база C++, которая используется нашим Android-проектом через JNI (скрипты сборки и все такие Android-специфические). Мне нужно обновить наш проект Objective C, который использует более старую версию той же библиотеки. Проблема в том, что у меня есть только код Objective C, но не старый код на C++ и make-файлы iOS (они были сделаны внешним агентством) - только двоичный файл .a. Как я могу создать такую статическую iOS-библиотеку из кода JNI, с чего начать? Я читаю это прямо сейчас: http://www.clintharris.net/2009/iphone-app-shared-libraries/ и обновит этот пост с более подробной информацией, если вы заинтересованы в помощи.как скомпилировать Android NDK lib на статическую iOS lib
ответ
У вас возникли определенные проблемы при попытке этого? Предполагая, что код является кросс-платформенным и может работать на iOS, вам просто нужно либо создать новый make-файл (специализированные Android), либо перетащить файлы в новый или существующий проект XCode.
Apple Clang может скомпилировать (и вы можете конечно смешивать) C, C++ и Obj-C. Если вам нужно, например, комбинировать Obj-C и C++, напишите свой файл .mm и идите.
Пример Makefile (примечание: небрежное, но должен иллюстрировать!): http://pastebin.com/ZyrsfT87
Вы застряли. iOS и Android не имеют одного и того же ABI. Даже если вы могли бы сделать магию компоновщика, чтобы вытащить символы из общей библиотеки ELF и связать их с двоичным файлом Mach, функции будут разбиваться, потому что такие вещи, как передача аргументов и установка стека кадров, отличаются (честно говоря, я не знаю деталей за исключением того, что iOS не EABI). Это просто невозможно, если вы готовы писать или создавать уровни thunking уровня сборки для каждой функции. Но в основном: вы SOL.
благодаря @ ANDY-Россу, но я не думаю о бинарной совместимости - У меня есть исходные файлы, просто не знает, как их строить для iOS и как перенести часть, определенную NDK. В ближайшее время обновит мой вопрос. – Gabor
- 1. android ndk lib не устанавливаются
- 2. Совместное использование Android NDK Lib
- 3. Android ndk удалить префикс "lib"
- 4. Как разобрать статическую библиотеку .lib?
- 5. GRT lib, и как импортировать Native lib на android sudio
- 6. Lib, созданный с помощью Android ndk, сжимается
- 7. android build static lib
- 8. Как установить путь NDK lib в Gradle?
- 9. Как скомпилировать статическую библиотеку с помощью Android NDK?
- 10. Как скомпилировать только зависимость от AAR lib
- 11. Ссылка на статический lib, который ссылается на статический lib
- 12. Как разбить мой проект NDK на lib и приложение
- 13. как скомпилировать boost_thread для Android NDK?
- 14. Как скомпилировать nana в статический lib
- 15. как скомпилировать clutter lib для wince 6.0
- 16. ndk: ссылка на статическую библиотечную ошибку
- 17. Как можно связать статическую версию lib с сборкой отладки?
- 18. Как создать приложение с Superpowered lib для NDK меньше 23?
- 19. Eclipse CDT, создайте как статический lib, так и общий lib
- 20. ndk-build of static lib - зачем он создает другие файлы?
- 21. Как использовать c lib (.so) от android?
- 22. Невозможно скомпилировать источники с ta-lib
- 23. android dexed lib пуст
- 24. Android Binding Lib
- 25. Проблемы с компиляцией в общей библиотеке Android NDK не могут скомпилировать статическую библиотеку
- 26. Android - Sugar Lib NullPointerException
- 27. QT + Android + Lib = ошибка VFP
- 28. Android Volley устарел lib
- 29. Интеграция Android .aar lib
- 30. Android UITableView lib не прокручивается?
спасибо @nuskooler, поэтому первый вопрос заключается в том, как преобразовать 'Application.mk' в сборку LLVM/GCC ... не удалось найти учебники по этому вопросу. Я вижу несколько «Makefile.Lib», которые тоже висят, но не уверены, что с ними делать, очевидно, просто получая «make: *** Нет целей. Stop.' – Gabor
@ ber4444 вот пример Makefile, который создает sqlite для iOS 5.0.1. Это довольно неряшливо, но должно проиллюстрировать общую концепцию. В основном вы имеете дело со стандартными Makefile в этот момент + несколько дополнительных команд Apple только для GCC или Clang/LLVM: http://pastebin.com/ZyrsfT87 – NuSkooler