无法加载库:reloc_library[1285]:找不到“rand" [英] Cannot load library: reloc_library[1285]: cannot locate 'rand'

查看:37
本文介绍了无法加载库:reloc_library[1285]:找不到“rand"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将 PJSIP 库用于我的 Android 应用程序.我根据本手册构建了 pjsua 示例应用程序:https://trac.pjsip.org/repos/wiki/Getting-Started/Android

但是当示例应用程序启动时,异常触发:

12-06 15:03:58.043: D/dalvikvm(628): 尝试加载 lib/data/data/org.pjsip.pjsua2.app/lib/libpjsua2.so 0x4129d98012-06 15:03:58.064:W/dalvikvm(628):异常Ljava/lang/UnsatisfiedLinkError;初始化 Lorg/pjsip/pjsua2/app/MyApp 时抛出;12-06 15:03:58.064:D/AndroidRuntime(628):关闭虚拟机12-06 15:03:58.064: W/dalvikvm(628): threadid=1: 线程退出时出现未捕获的异常 (group=0x409c01f8)12-06 15:03:58.083:E/AndroidRuntime(628):致命异常:主要12-06 15:03:58.083: E/AndroidRuntime(628): java.lang.ExceptionInInitializerError12-06 15:03:58.083: E/AndroidRuntime(628): 在 org.pjsip.pjsua2.app.MainActivity.onCreate(MainActivity.java:85)12-06 15:03:58.083: E/AndroidRuntime(628): 在 android.app.Activity.performCreate(Activity.java:4465)12-06 15:03:58.083: E/AndroidRuntime(628): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)12-06 15:03:58.083: E/AndroidRuntime(628): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)12-06 15:03:58.083: E/AndroidRuntime(628): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)12-06 15:03:58.083: E/AndroidRuntime(628): 在 android.app.ActivityThread.access$600(ActivityThread.java:123)12-06 15:03:58.083: E/AndroidRuntime(628): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)12-06 15:03:58.083: E/AndroidRuntime(628): 在 android.os.Handler.dispatchMessage(Handler.java:99)12-06 15:03:58.083: E/AndroidRuntime(628): 在 android.os.Looper.loop(Looper.java:137)12-06 15:03:58.083: E/AndroidRuntime(628): 在 android.app.ActivityThread.main(ActivityThread.java:4424)12-06 15:03:58.083: E/AndroidRuntime(628): 在 java.lang.reflect.Method.invokeNative(Native Method)12-06 15:03:58.083: E/AndroidRuntime(628): 在 java.lang.reflect.Method.invoke(Method.java:511)12-06 15:03:58.083: E/AndroidRuntime(628): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)12-06 15:03:58.083: E/AndroidRuntime(628): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)12-06 15:03:58.083: E/AndroidRuntime(628): 在 dalvik.system.NativeStart.main(Native Method)12-06 15:03:58.083: E/AndroidRuntime(628): 引起: java.lang.UnsatisfiedLinkError: 无法加载库: reloc_library[1285]: 37 找不到rand"...12-06 15:03:58.083: E/AndroidRuntime(628): 在 java.lang.Runtime.loadLibrary(Runtime.java:370)12-06 15:03:58.083: E/AndroidRuntime(628): 在 java.lang.System.loadLibrary(System.java:535)12-06 15:03:58.083:E/AndroidRuntime(628):在 org.pjsip.pjsua2.app.MyApp.<clinit>(MyApp.java:235)

似乎 appl 无法加载 libpjsua2.so 库.我以前从未使用过NDK,所以我对这个问题没有任何想法,请帮助我...

解决方案

如果您已经使用 android-21 目标构建了本机组件,但试图在设备上运行它,则会发生这种情况使用较旧的 Android 版本.除非您特别小心,否则您无法在旧设备上运行使用 android-21 目标构建的二进制文件.对于基本的 C 函数,你使用 android-3android-20 之间的哪个目标版本无关紧要,它应该适用于所有这些,但如果你使用android-21 它只适用于那个版本和更新的版本.

有关此问题的更多详细信息,请参阅https://stackoverflow.com/a/27093163/3115956.>

I'm trying to use PJSIP library for my Android application. I built pjsua sample application according to this manual: https://trac.pjsip.org/repos/wiki/Getting-Started/Android

But when sample application is launching, exception triggers:

12-06 15:03:58.043: D/dalvikvm(628): Trying to load lib /data/data/org.pjsip.pjsua2.app/lib/libpjsua2.so 0x4129d980
12-06 15:03:58.064: W/dalvikvm(628): Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lorg/pjsip/pjsua2/app/MyApp;
12-06 15:03:58.064: D/AndroidRuntime(628): Shutting down VM
12-06 15:03:58.064: W/dalvikvm(628): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
12-06 15:03:58.083: E/AndroidRuntime(628): FATAL EXCEPTION: main
12-06 15:03:58.083: E/AndroidRuntime(628): java.lang.ExceptionInInitializerError
12-06 15:03:58.083: E/AndroidRuntime(628):  at org.pjsip.pjsua2.app.MainActivity.onCreate(MainActivity.java:85)
12-06 15:03:58.083: E/AndroidRuntime(628):  at android.app.Activity.performCreate(Activity.java:4465)
12-06 15:03:58.083: E/AndroidRuntime(628):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
12-06 15:03:58.083: E/AndroidRuntime(628):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
12-06 15:03:58.083: E/AndroidRuntime(628):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
12-06 15:03:58.083: E/AndroidRuntime(628):  at android.app.ActivityThread.access$600(ActivityThread.java:123)
12-06 15:03:58.083: E/AndroidRuntime(628):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
12-06 15:03:58.083: E/AndroidRuntime(628):  at android.os.Handler.dispatchMessage(Handler.java:99)
12-06 15:03:58.083: E/AndroidRuntime(628):  at android.os.Looper.loop(Looper.java:137)
12-06 15:03:58.083: E/AndroidRuntime(628):  at android.app.ActivityThread.main(ActivityThread.java:4424)
12-06 15:03:58.083: E/AndroidRuntime(628):  at java.lang.reflect.Method.invokeNative(Native Method)
12-06 15:03:58.083: E/AndroidRuntime(628):  at java.lang.reflect.Method.invoke(Method.java:511)
12-06 15:03:58.083: E/AndroidRuntime(628):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
12-06 15:03:58.083: E/AndroidRuntime(628):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
12-06 15:03:58.083: E/AndroidRuntime(628):  at dalvik.system.NativeStart.main(Native Method)
12-06 15:03:58.083: E/AndroidRuntime(628): Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1285]:    37 cannot locate 'rand'...
12-06 15:03:58.083: E/AndroidRuntime(628):  at java.lang.Runtime.loadLibrary(Runtime.java:370)
12-06 15:03:58.083: E/AndroidRuntime(628):  at java.lang.System.loadLibrary(System.java:535)
12-06 15:03:58.083: E/AndroidRuntime(628):  at org.pjsip.pjsua2.app.MyApp.<clinit>(MyApp.java:235)

It seems like appl cannot load libpjsua2.so library. I have never used the NDK before, so i don't have any ideas about this issue, please help me...

解决方案

This happens if you've built your native components with the android-21 target, but are trying to run it on a device with an older Android version. Unless you take very special care, you can't run binaries built with the android-21 target on older devices. For basic C functions, it shouldn't matter which target version between android-3 and android-20 you use, it should work on all of them, but if you use android-21 it only works on that version and newer.

See https://stackoverflow.com/a/27093163/3115956 for more details on this issue.

这篇关于无法加载库:reloc_library[1285]:找不到“rand"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆