so文件加载异常,dlopen failed:has no loadable segments

浪_ 2018-07-05 05:05:21

java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app-lib/com.cmstop.jnitest-2/libFaceDetectorJni.so" has no loadable segments,实在是找不出原因呢,求解决
...全文
697 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿飞__ 2018-07-06
  • 打赏
  • 举报
回复
这个错误是加载so时,下面这个函数报的
bool ElfReader::ReserveAddressSpace() {

Elf32_Addr min_vaddr;

//获取program header table中所有LOAD属性的segment的大小范围

load_size_ = phdr_table_get_load_size(phdr_table_, phdr_num_, &min_vaddr);

if (load_size_ == 0) {

DL_ERR(“\”%s\” has no loadable segments”, name_);

return false;

}
...


然后就是phdr_table_get_load_size方法,遍历phdr表,获取最小虚拟地址和最大虚拟地址,相差就是加载大小。
所以问题是出在libFaceDetectorJni.so上面,这个so在内存中需要的空间大小为0,至于为什么为0,就要看你生成这个so的方式了把

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧