移植yolo v1到android时的jni错误not a valid ELF executable

85 篇文章 0 订阅
17 篇文章 0 订阅

移植yolo到android时,编译没错,运行时报错:

03-24 17:36:30.029: E/AndroidRuntime(28453): Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: load_library(linker.cpp:761): not a valid ELF executable: /data/app-lib/com.ndk.testndk-2/libyoloso.so
03-24 17:36:30.029: E/AndroidRuntime(28453): at java.lang.Runtime.loadLibrary(Runtime.java:371)
03-24 17:36:30.029: E/AndroidRuntime(28453): at java.lang.System.loadLibrary(System.java:535)
03-24 17:36:30.029: E/AndroidRuntime(28453): at com.ndk.testndk.JniClient.<clinit>(JniClient.java:5)
03-24 17:36:30.029: E/AndroidRuntime(28453): ... 15 more


经查,是在box.c的这个函数里的问题: 

box encode_box(box b, box anchor)
{
    box encode;
    encode.x = (b.x - anchor.x) / anchor.w;
    encode.y = (b.y - anchor.y) / anchor.h;

    encode.w = log2(b.w / anchor.w);
    encode.h = log2(b.h / anchor.h);
 
    return encode;
}

就是log2这个函数的问题,很奇怪,在别的文件里面单独运行比如log2(4.0f)是正常的。

改为如下就ok了: 


box encode_box(box b, box anchor)
{
    box encode;
    encode.x = (b.x - anchor.x) / anchor.w;
    encode.y = (b.y - anchor.y) / anchor.h;
 
	encode.w = log(b.w / anchor.w)/log(2);
	encode.h = log(b.h / anchor.h)/log(2);

    return encode;
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值