Android 未找到java.lang.UnsatifiedLinkError库:(链接mylib.so失败)

Android 未找到java.lang.UnsatifiedLinkError库:(链接mylib.so失败),android,c++,android-ndk,cross-compiling,Android,C++,Android Ndk,Cross Compiling,我已经成功地使用androidndk独立工具链将c++库交叉编译到android平台。 我已经在Eclipse中创建了一个新的android应用程序项目,其中包含一个jni dolder和android.mk文件,当我构建ndk时,构建工作进展顺利,它将mylib.so添加到libs/armeabi文件夹中 问题是当我执行System.loadLibrary(“mylibname”)时; 我在logcat中得到以下错误: 无法dlopen(/data/data/com.oussama.first

我已经成功地使用androidndk独立工具链将c++库交叉编译到android平台。 我已经在Eclipse中创建了一个新的android应用程序项目,其中包含一个jni dolder和android.mk文件,当我构建ndk时,构建工作进展顺利,它将mylib.so添加到libs/armeabi文件夹中 问题是当我执行System.loadLibrary(“mylibname”)时; 我在logcat中得到以下错误: 无法dlopen(/data/data/com.oussama.firsttry/lib/libdash.so):无法加载库:link_image[1995]:链接libdash.so失败 这会导致java.lang.UnsatifiedLink错误:找不到我的库**

我的lib必须依赖于一个库,并且emulator无法加载它,因此我执行了一个readelf-d mylib。因此结果如下:

偏移量0x1617c4处的动态部分包含26个条目:

 Tag        Type                         Name/Value
0x00000001 (NEEDED)                     Shared library: [libm.so]
0x00000001 (NEEDED)                     Shared library: [libc.so]
0x00000001 (NEEDED)                     Shared library: [libdl.so]
0x0000000e (SONAME)                     Library soname: [libdash.so]
0x00000010 (SYMBOLIC)                   0x0
0x0000000f (RPATH)                      Library rpath:      [/home/oussama064/libdash/libdash/../../neededLibs]
0x00000019 (INIT_ARRAY)                 0x157268
0x0000001b (INIT_ARRAYSZ)               172 (bytes)
0x0000001a (FINI_ARRAY)                 0x157314
0x0000001c (FINI_ARRAYSZ)               8 (bytes)
0x00000004 (HASH)                       0xf4
0x00000005 (STRTAB)                     0x10f58
0x00000006 (SYMTAB)                     0x50b8
0x0000000a (STRSZ)                      134112 (bytes)
0x0000000b (SYMENT)                     16 (bytes)
0x00000003 (PLTGOT)                     0x1618b4
0x00000002 (PLTRELSZ)                   1096 (bytes)
0x00000014 (PLTREL)                     REL
0x00000017 (JMPREL)                     0x40dd8
0x00000011 (REL)                        0x31b38
0x00000012 (RELSZ)                      62112 (bytes)
0x00000013 (RELENT)                     8 (bytes)
0x00000018 (BIND_NOW)                   
0x6ffffffb (FLAGS_1)                    Flags: NOW
0x6ffffffa (RELCOUNT)                   7738
0x00000000 (NULL)                       0x0
这是我的Android.mk文件:

 LOCAL_PATH := $(call my-dir)

 include $(CLEAR_VARS) LOCAL_MODULE    := libcurl  LOCAL_SRC_FILES :=
 ../../../../neededLibs/libcurl.a

 include $(PREBUILT_STATIC_LIBRARY)

 include $(CLEAR_VARS) LOCAL_MODULE    := libxml  LOCAL_SRC_FILES :=
 ../../../../neededLibs/libxml2.a

 include $(PREBUILT_STATIC_LIBRARY)

 include $(CLEAR_VARS) LOCAL_MODULE    := libz  LOCAL_SRC_FILES :=
 ../../../../neededLibs/libz.a

 include $(PREBUILT_STATIC_LIBRARY)

 include $(CLEAR_VARS) LOCAL_MODULE    := m  LOCAL_SRC_FILES :=
 libm.so include $(PREBUILT_SHARED_LIBRARY) include $(CLEAR_VARS)
 LOCAL_MODULE    := dl  LOCAL_SRC_FILES := libdl.so

 include $(PREBUILT_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE
 := c  LOCAL_SRC_FILES := libc.so

 include $(PREBUILT_SHARED_LIBRARY)

 include $(CLEAR_VARS)

 LOCAL_MODULE := d LOCAL_SRC_FILES := libdash.so
 LOCAL_SHARED_LIBRARIES := c m dl 

 LOCAL_STATIC_LIBRARIES := libz libxml libcurl  include
 $(PREBUILT_SHARED_LIBRARY)
我现在真的被卡住了,我想不出丢失的图书馆是什么

当我进行ndk构建V=1-B时,我得到以下结果:

rm -f /home/oussama064/Android/workspace/FirstTry/libs/armeabi/lib*.so   
/home/oussama064/Android/workspace/FirstTry/libs/armeabi-v7a/lib*.so /home/oussama064/Android/workspace/FirstTry/libs/mips/lib*.so /home/ussama064/Android/workspace/FirstTry/libs/x86/lib*.so rm-f/home/oussama064/Android/workspace/FirstTry/libs/armeabi/gdbserver /home/oussama064/Android/workspace/FirstTry/libs/armeabi-v7a/gdbserver /home/oussama064/Android/workspace/FirstTry/libs/mips/gdbserver /home/ussama064/Android/workspace/FirstTry/libs/x86/gdbserver rm-f/home/oussama064/Android/workspace/FirstTry/libs/armeabi/gdb.setup /home/oussama064/Android/workspace/FirstTry/libs/armeabi-v7a/gdb.setup /home/ussama064/Android/workspace/FirstTry/libs/mips/gdb.setup /home/ussama064/Android/workspace/FirstTry/libs/x86/gdb.setup
make:Circular obj/local/armeabi/libm.so您应该使用libm、libc和libdl共享库的系统版本

LOCAL_LDLIBS := -lm -ldl 

如果不能,请静态链接它们。

好吧,您正在尝试加载
mylib.so
,但您所得到的只是
libdash.so
。如果这不是问题,您已编辑了错误消息,请复制并粘贴正确的错误文本。您应该在问题中给出正确的描述,您正在尝试加载哪个库?无论如何,我的两分钱是在你应该用System.loadLibrary(“dash”)我已经用System.loadLibrary(“dash”);正如我在错误消息中看到的,android实际上在libs/armeabi/libdash.so下找到了lib
/home/oussama064/Android/workspace/FirstTry/libs/armeabi/libdl.so
Install        : libm.so =>   
/home/oussama064/Android/workspace/FirstTry/libs/armeabi/libm.so
install -p ./obj/local/armeabi/libm.so
/home/oussama064/Android/workspace/FirstTry/libs/armeabi/libm.so
/home/oussama064/NDK/android-ndk-r8d/toolchains/arm-linux-androideabi-     

4.6/prebuilt/linux-x86/bin/arm-linux-androideabi-strip --strip-unneeded    

/home/oussama064/Android/workspace/FirstTry/libs/armeabi/libm.so
LOCAL_LDLIBS := -lm -ldl