Множественные ошибки ссылок при создании приложения Qt 5.15 для Android

Приложение отлично работает с Qt 5.12.9 для Android. Однако сбой с 5.15.1 на этапе компоновки (компилируется нормально, поскольку устаревший Qt API был исправлен). Строительство для arm64-v8a Только ABI:

qmake ANDROID_ABIS="arm64-v8a" ...

Есть несколько ошибок ссылок, например:

~/Qt/5.15.1/android/include/QtCore/qobjectdefs_impl.h:415: undefined reference to `operator delete(void*)'
obj/QGCMapEngine.o: In function `QList<QString>::append(QString const&)':
~/Qt/5.15.1/android/include/QtCore/qlist.h:626: undefined reference to `__cxa_begin_catch'
~/Qt/5.15.1/android/include/QtCore/qlist.h:628: undefined reference to `__cxa_rethrow'
~/Qt/5.15.1/android/include/QtCore/qlist.h:629: undefined reference to `__cxa_end_catch'
~/Qt/5.15.1/android/include/QtCore/qlist.h:644: undefined reference to `__cxa_begin_catch'
~/Qt/5.15.1/android/include/QtCore/qlist.h:646: undefined reference to `__cxa_rethrow'
~/Qt/5.15.1/android/include/QtCore/qlist.h:647: undefined reference to `__cxa_end_catch'

Пытался исправить AndroidManifest.xmlкак упомянуто здесь: Qt для Android известные проблемы без везения. Воспроизводится с установленной последней версией Qt SDK и с Qt, созданным из исходных кодов в докере. Есть идеи, в чем проблема и как ее исправить?

Рекомендации:

1 ответ

Решение

Проблема была в -nostdlib++исправление взлома в следующей строке: QGCCommon.pri#L60

       QMAKE_LINK += -nostdlib++ # Hack fix

Для 5.15 нужно удалить и патчить AndroidManifest.xmlправильно собрать APK. Эта строка могла быть удалена для версии 5.12, так как это была проблема ndk20, в то время как в настоящее время Qt Creator устанавливает и использует ndk21 по умолчанию.

Другие вопросы по тегам