Android NDK UnsatisfiedLinkError:“dlopen失败:空/丢失DT_HASH”

前端之家收集整理的这篇文章主要介绍了Android NDK UnsatisfiedLinkError:“dlopen失败:空/丢失DT_HASH”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在使用崩溃报告服务跟踪我们的Android应用程序(使用NDK加载C库)的崩溃.少数用户遇到以下崩溃:

java.lang.UnsatisfiedLinkError: dlopen Failed: empty/missing DT_HASH in "cpplibrary.so" (built with --hash-style=gnu?)
   at java.lang.Runtime.loadLibrary(Runtime.java:365)
   at java.lang.System.loadLibrary(System.java:526)

我可以在互联网上找到的这个错误提及(例如这个Google Groups post)讨论了构建lib的问题,这会导致每次运行应用程序时都会出现此错误.几乎没有关于为什么偶尔会发生这种情况的信息. This post是我能找到的最接近的.

根据崩溃痕迹,看起来任何特定的用户都会经历这种不断的延伸;我不确定这些用户是否能够正确加载lib.有没有人对有时可能导致这种情况发生的想法有所了解?我可以以不同的方式进行NDK构建以试图阻止它吗?

谢谢!

编辑:This post提到了有条件地获得此类错误的两种方法;我会照顾他们.

Edit2:构建文件
Android.mk(摘录):

include $(CLEAR_VARS)
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
LOCAL_C_INCLUDES := 

Application.mk:

APP_STL := stlport_static
APP_CFLAGS += -std=c++11
最佳答案
如果您是第三方构建.so库供其他人使用,设置-Wl,– hash-style =两者似乎都是最好的主意.这样可以加快Gnu样式哈希的加载速度和SysV哈希的向后兼容性.
原文链接:https://www.f2er.com/android/431222.html

猜你在找的Android相关文章