Ошибка в LoadLibrary: _ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw

обзор
Попытка скомпилировать lib.so с Android NDK r9d для использования нативного кода в моем приложении для Android. Поскольку lib.so - большая третья сторона с множеством зависимостей, я не выполнил типичный проект NDK (с Android.mk и т. Д.); Вместо этого я использовал стандартный файл compile.sh, который поставляется с исходными кодами lib, и внес в него соответствующие изменения для использования цепочки инструментов NDK.
Наконец, lib.so компилируется без ошибок.

проблема
Когда я тестирую lib.so в своем приложении для Android, я получаю "редкие" (для меня) ошибки. Вот LogCat (если кто-то знает, как "развернуть" сообщение "... еще 15", я сделаю это):

04-29 11:51:47.690: E/AndroidRuntime(10029): FATAL EXCEPTION: main
04-29 11:51:47.690: E/AndroidRuntime(10029): java.lang.ExceptionInInitializerError
04-29 11:51:47.690: E/AndroidRuntime(10029):    at com.shalafisoft.mediatabplus.AboutActivity.onCreate(AboutActivity.java:37)
04-29 11:51:47.690: E/AndroidRuntime(10029):    at android.app.Activity.performCreate(Activity.java:5206)
04-29 11:51:47.690: E/AndroidRuntime(10029):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1083)
04-29 11:51:47.690: E/AndroidRuntime(10029):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064)
04-29 11:51:47.690: E/AndroidRuntime(10029):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
04-29 11:51:47.690: E/AndroidRuntime(10029):    at android.app.ActivityThread.access$600(ActivityThread.java:140)
04-29 11:51:47.690: E/AndroidRuntime(10029):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
04-29 11:51:47.690: E/AndroidRuntime(10029):    at android.os.Handler.dispatchMessage(Handler.java:99)
04-29 11:51:47.690: E/AndroidRuntime(10029):    at android.os.Looper.loop(Looper.java:137)
04-29 11:51:47.690: E/AndroidRuntime(10029):    at android.app.ActivityThread.main(ActivityThread.java:4898)
04-29 11:51:47.690: E/AndroidRuntime(10029):    at java.lang.reflect.Method.invokeNative(Native Method)
04-29 11:51:47.690: E/AndroidRuntime(10029):    at java.lang.reflect.Method.invoke(Method.java:511)
04-29 11:51:47.690: E/AndroidRuntime(10029):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
04-29 11:51:47.690: E/AndroidRuntime(10029):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
04-29 11:51:47.690: E/AndroidRuntime(10029):    at dalvik.system.NativeStart.main(Native Method)
04-29 11:51:47.690: E/AndroidRuntime(10029): Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1307]:  1918 cannot locate '_ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw'...
04-29 11:51:47.690: E/AndroidRuntime(10029):    at java.lang.Runtime.loadLibrary(Runtime.java:370)
04-29 11:51:47.690: E/AndroidRuntime(10029):    at java.lang.System.loadLibrary(System.java:535)
04-29 11:51:47.690: E/AndroidRuntime(10029):    at com.shalafisoft.mediainfo.MediaInfoLib.<clinit>(MediaInfoLib.java:6)
04-29 11:51:47.690: E/AndroidRuntime(10029):    ... 15 more

Здесь класс для загрузки библиотеки (строка 6 - LoadLibrary).

public class MediaInfoLib {

    static {
        System.loadLibrary("mediainfoMIO");
    }

    public native String pruebaJNI();
}  

Thigs я нашел или сделал

  • Я гуглил идентификатор _ZW... и, похоже, он связан с /usr/lib32/libstdc++.so. Это все, что я знаю.
  • Я погуглил ошибку, и иногда люди говорят, что что-то связано с аркой; Я обычно помещаю lib.so в libs/armeabi, но я тоже пробовал libs/armeabi-v7a с тем же результатом.

Подробнее

  • Для компиляции lib.so я использую Ubuntu 12.10 x86 с Android NDK r9d
  • Для программирования приложения Android я использую Eclipse ADT под Windows 8 x64
  • Для тестирования приложения Android я использую свой телефон Samsung Galaxy S3 (без эмулятора)

0 ответов

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