Tencent / ncnn

ncnn is a high-performance neural network inference framework optimized for the mobile platform
Other
20.14k stars 4.14k forks source link

编译的ncnn在android上运行直接崩溃 #117

Closed lubinBoooos closed 7 years ago

lubinBoooos commented 7 years ago

ncnn是使用目录下的build.sh运行然后拷贝的build-android_armv7a里install里的内容,加入到android studio的工程中。 android的demo基本是照mobile-ncnn写的。 程序运行到: ex.extract(squeezeTest_model_proto_id::BLOB_prob, out); 程序崩溃,控制台打印错误: libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x6c0 in tid 6214 有哪位大侠试过吗?有试过没问题的,能说下ncnn怎么在linux上编译的吗?我上面的方法出什么错了吗?

nihui commented 7 years ago

使用的是自己的模型吗?

lubinBoooos commented 7 years ago

不是,还是使用的squeeze1.1的那个模型,那两个bin文件我也用demo的试了,squeezeTest_model_proto_id::BLOB_prob的值和demo里的一样,demo能跑通,但是我发现demo用的是nihui自己的libncnn.a,我这边没有,自己编译一个,出现上面的问题

nihui commented 7 years ago

load_param_bin 和 load_model 有错误吗?

lubinBoooos commented 7 years ago

OK了,谢谢,果然是load_param这里退出了 ret = global_Net.load_param(squeezenet_param.data()); //if(ret != 0) return JNI_FALSE; ncnn的两个重载的load_param的返回值意义不一样,使用memory的返回的是文件bytes的大小,另一个是0和-1分别表示正常和异常