До Android 6 у нас была рабочая версия приложения, которая была написана с использованием Qt Android, начиная с Android 6 в Nexus устройство мы видим странное заблуждениеdlopen failed: не удалось найти символ «__cxa_finalize», на который ссылается «/system/lib/libdl.so»
dlopen failed: cannot locate symbol "__cxa_finalize" referenced by "/system/lib/libdl.so"
и сбой приложения.
objdump -T ourlibrary.so
...
00000000 DF *UND* 00000000 __cxa_finalize
...
-lc
протестирован с флагом, чтобы связать libc.so, не может помочь, без него того же проблемы.
другие зависимые библиотеки при строительстве: libgnustl_shared.so
для того, чтобы обмануть компилятор мы добавили
extern "C" int __cxa_finalize(void*); // { empty body somewhere in .cpp file }
не помогло, может кто-нибудь точку в проблеме? Примечание: это не будет полностью работать до Android 6 (Зефир)
UPD1: апи версия android-9
, архитектура arm
, кварты андроид сборник armv5
, Набор инструментов версия 4.9
UPD2: некоторые другие библиотеки показывают Glibc версия
00000000 w DF *UND* 00000000 GLIBC_2.2.5 __cxa_finalize
Я бы добавил, если у вас нет этой явной загрузки, но у вас есть сбой, добавьте эту явную загрузку ** libdl ** достаточно рано и «попробуйте ... уловить» это исключение. –
удалил 'System.loadLibrary (" dl ")' и начал работать нормально – user1318496