Android caffe内置演示显示错误

Android caffe内置演示显示错误,android,android-ndk,caffe,Android,Android Ndk,Caffe,作为新手,我想在我的Android项目中使用内置版本。我试着跑,但在跑的时候,它显示了以下内容: 03-26 14:46:35.697 2800-3042/com.sh1r0.caffe_android_demo A/libc﹕ Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 3042 (AsyncTask #1) (应用程序崩溃)我可以看到sigsev信号是通过android AsyncTask抛出的。 问题可能来自此

作为新手,我想在我的Android项目中使用内置版本。我试着跑,但在跑的时候,它显示了以下内容:

 03-26 14:46:35.697    2800-3042/com.sh1r0.caffe_android_demo A/libc﹕ Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 3042 (AsyncTask #1)

(应用程序崩溃)

我可以看到sigsev信号是通过android AsyncTask抛出的。 问题可能来自此函数

caffeMobile.predictImage(strings[0])[0]; //line 160 of MainActivity
这个信号来自JNI,除非您可以在本机(通过ndk)调试应用程序,否则很难知道问题出在哪里。caffe示例未配置为在本机方法上调试

请尝试以下问题以管理错误:

确保此字符串[0]数组中的映像路径不为空。并且存在

确保其他caffeMobile函数能够在没有 问题,例如:

如果您能够执行其他功能,则图像路径可能不正确,请检查


如果无法执行loadModel或setNumThreads函数,则可能是apk没有正确加载libjni.so库,或者jni网桥无法定位jni函数。

您在C代码中取消引用空指针。在那里找到堆栈跟踪,就可以知道它在哪个函数中。除此之外,我们无法为您提供太多帮助,您没有给我们任何信息。您的意思是关于
Logcat
?它可能在您的Logcat中(但可能不是,一些设备将C崩溃路由到traces.txt)。它将有一个不同的格式,虽然它是一个C部分核心转储,而不是java堆栈跟踪。如果可能,请下载并运行演示应用程序,让我知道你是否也得到相同的错误。plz
  caffeMobile = new CaffeMobile();
  caffeMobile.setNumThreads(4);
  caffeMobile.loadModel("/sdcard/caffe_mobile/bvlc_reference_caffenet/deploy.prototxt",    "/sdcard/caffe_mobile/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel");