#android-ndk
#android-ndk
Вопрос:
Я работаю над проектом Android C , который требует от меня создания новой общей библиотеки и вызова этой библиотеки из существующего кода. Существующий код использует довольно старую версию ndk. Я подумываю об использовании последней версии ndk для создания моей общей библиотеки. Я думаю, что до тех пор, пока API и ABI совпадают, интеграция должна работать нормально.
Интересно, видите ли вы какие-либо проблемы с этим подходом.
Как существующий, так и новый код используют stl. Я думаю, что просто свяжу свой код со статическими библиотеками stl, чтобы избежать любых конфликтов во время выполнения. Как вы думаете, это сработает? С уважением.
Ответ №1:
Я заметил только проблему, когда в разных собственных частях (готовых библиотеках и библиотеках проектов) использовалась разная связь STL. Готовые библиотеки были скомпилированы с использованием static STL library
, но использовались библиотеки проекта shared STL library
, и поэтому иногда код работал странно (в моем случае это была проблема с использованием std::fstream
, и std::locale::facet
из-за глобальных переменных шаблонных классов были установлены дважды).
Ответ №2:
Обычно они работают, но это совершенно непроверенная конфигурация, и поломки ABI случаются.
Если это вариант, вы всегда должны соответствовать своим версиям NDK.