我已经使用NDK编译了一个Android的JNI库,该库静态链接到我使用此项目编译的libcrypto.a,https://github.com/fries/android-external-openssl动态链接libdl.so。
即使NDK平台/ android-x / arch-arm / usr / lib目录对于每个版本的android都有一个libdl.so,当我尝试在Android 2.1上加载我的库时,我收到以下错误:
Trying to load lib /data/data/package.name/lib/libmylibrary.so 0x44e83a28
Unable to dlopen(/data/data/package.name/lib/libmylibrary.so): Cannot load library: reloc_library[1244]: 30 cannot locate 'dladdr'...
然后继续使用UnsatisfiedLinkError崩溃,但在2.2+我的原生库链接上运行完美
对我发生的事情或如何解决问题的任何想法?
答案 0 :(得分:2)
所以在研究这个问题时我发现虽然libdl存在于所有版本的android中,dladdr()被添加到2.2中的C库中
NDK changes.html的相关行如下:
- C Library changes:
For android-8 (a.k.a. Android 2.2):
- add DL_info and dladdr().