java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app-lib/com.cmstop.jnitest-2/libFaceDetectorJni.so" has no loadable segments,实在是找不出原因呢,求解决

解决方案 »

  1.   

    这个错误是加载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的方式了把