2017-01-30 3 views
0

Я перекрестно скомпилированные приложения с CMake, генерируя .so файл для ARM v7, который позже включен в Android проекта:Не удалось найти символ __aeabi_memset в Android приложения

cmake ../src -G "Unix Makefiles" -DCMAKE_SYSTEM_NAME=Android -DCMAKE_ANDROID_NDK="/opt/android-ndk-r13b" 

Когда я создаю APK и загрузить его на мобильный телефон. Приложение не запускается, производит следующее сообщение:

AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: 
cannot locate symbol "__aeabi_memset" referenced by 
"/data/app/org.qtproject.example/lib/arm/libexample.so" 

Кажется, что Libc содержит __aeabi_memset, но я в настоящее время загрузки этой библиотеки в загрузчике. Что можно назвать этой функцией?

Я попытался с помощью понижая SDK к 22 API:

  • Android SDK инструменты сборки 23.0.1
  • Android 5.1.1 (API 22)
  • CMake 3.7.2.
+0

У меня такая же проблема, но только с устройствами на платформе MTK6580 с Android 6.0. Вы нашли способ исправить эту проблему? – Beyka

+0

Я включил в проект Android статическую библиотеку, которая была скомпилирована с другой версией Android NDK. Проблема была решена путем компиляции всего с той же версией NDK. – lackadaisical

ответ

0

Ok. После некоторого тестирования я нашел решение для меня, возможно, это будет полезно для вас или кого-то еще. Моя родная библиотека перестает сбой с UnsatisfiedLinkError: dlopen не удалось: не смог найти символ «__aeabi_memset» после того, как я его перестроил с помощью Android-NDK версии 10.

Смежные вопросы