2016-07-15 68 views
2

我目前正在尝试构建和使用旨在将dlib移植到Android的dlib-android库。建筑是成功的;但是当在相应的演示项目dlib-android-app中使用已编译的共享C++库时,应用程序在开始通过JNI调用库函数时崩溃。dlib/dlib-android在OSX上构建时在运行时崩溃

这个运行时崩溃发生在我本地执行的任何版本,在OSX或Debian上使用任意的NDK版本。但是,无法使用包含在dlib-android-app项目中的预建版本dlib-android来重现崩溃。此外,项目维护人员表示他无法重现该问题。

什么因素可能导致我的本地构建在两个不同的操作系统上导致错误,而项目维护人员可以使用相同的代码库和构建过程来创建功能构建?难道全局编译器标志可能会导致这个问题?

资源

堆栈跟踪

backtrace: 
    #00 pc 000372dc /system/lib/libc.so (tgkill+12) 
    #01 pc 00014719 /system/lib/libc.so (pthread_kill+52) 
    #02 pc 00015337 /system/lib/libc.so (raise+10) 
    #03 pc 00011bd1 /system/lib/libc.so (__libc_android_abort+36) 
    #04 pc 00010044 /system/lib/libc.so (abort+4) 
    #05 pc 0046a103 /data/app/com.tzutalin.dlibtest-1/lib/arm/libpeople_det.so (__gnu_cxx::__verbose_terminate_handler()+226) 
    #06 pc 00433dc9 /data/app/com.tzutalin.dlibtest-1/lib/arm/libpeople_det.so (__cxxabiv1::__terminate(void (*)())+4) 
    #07 pc 00433e3d /data/app/com.tzutalin.dlibtest-1/lib/arm/libpeople_det.so (std::terminate()+8) 
    #08 pc 00433f61 /data/app/com.tzutalin.dlibtest-1/lib/arm/libpeople_det.so (__cxa_throw+120) 
    #09 pc 00150a9c /data/app/com.tzutalin.dlibtest-1/lib/arm/libpeople_det.so (dlib::compress_stream_kernel_1<dlib::entropy_encoder_model_kernel_5<257ul, dlib::entropy_encoder_kernel_2, 200000ul, 4ul>, dlib::entropy_decoder_model_kernel_5<257ul, dlib::entropy_decoder_kernel_2, 200000ul, 4ul>, dlib::crc32>::decompress(std::istream&, std::ostream&) const+544) 
    #10 pc 00150478 /data/app/com.tzutalin.dlibtest-1/lib/arm/libpeople_det.so (dlib::get_serialized_frontal_faces()+63512) 
    #11 pc 00140654 /data/app/com.tzutalin.dlibtest-1/lib/arm/libpeople_det.so (dlib::get_frontal_face_detector()+44) 
    #12 pc 0013544c /data/app/com.tzutalin.dlibtest-1/lib/arm/libpeople_det.so (DLibHOGFaceDetector::det(cv::Mat const&)+236) 
    #13 pc 000e8d30 /data/app/com.tzutalin.dlibtest-1/lib/arm/libpeople_det.so (Java_com_tzutalin_dlib_PeopleDet_jniBitmapFaceDect+868) 

回答

2

有这个(类似的)问题的几种相关的帖子: C++ Debug builds broke in Snow Leopard X-Code Xcode 3.2.1 and C++ string fails!

运行蟒蛇build_push.py时 - 将建立

ret = subprocess.call(['ndk-build', '-j4', 'NDK_LOG=1', 'NDK_DEBUG=1', 'V=0']) 

这种手段楼宇调试版(described here)

NDK_DEBUG = 1强制可调试构建(请参阅表1)。

NDK_DEBUG = 0强制发布版本(请参阅表1)。

考虑改变build_push.py脚本NDK_DEBUG = 0

+0

你真棒,非常感谢! –