ncnn一些问题汇总

在ubuntu添加ncnn静态库到demo

出现: ELF重定位分析  符号错误 等一系列error。所选的libncnn.a为原始ncnn包下build-android-armv7下的。PC为x86架构,不能用。 选择mac下的,暂时能跑通。

 

在利用ex.extract(,out)的值输出时 :Program received signal SIGSEGV, Segmentation fault.

等价为:段错误 段核心已转储。

 

加入读取图片后,显示因为空而读入图片失败。测试后得opencv不存在问题。在makefile中添加libncnn.a和INCLUDE之后就不行了,显示段错误。编出的ncnn静态库即便在make下成功了,但是否在实际加载上还是不行?

 

在example下的Cmakelists里设置opencv的地址,然后对例程放开。其他注释掉。从ncnn文件夹拿出之后在其他情况下编译,成功,运行时显示段错误。可能是libncnn.a不完全符合要求,即便编译成功了。因为有未定义的引用,故在Cmakelist中加入:

set(OpenCV_DIR /usr/local/share/OpenCV)  然后直接find_package…

并且对if(NOT OpenCV_FOUND) 条件判断整个注释掉。放开根目录下Cmakelists中的example.在build下进行cmake, make可生成可执行。

 

在AS中。出现undefined reference to `ncnn::Mat::from_pixels_resize(unsigned char const*, int, int, int, int, int, ncnn::Allocator*)' 在对应封装类的成员函数内。原本不报错,即程序本身没有问题。考虑是环境的问题。在主函数的.mk文件下,加入ncnn静态库时,要与所有静态库一起加入到LOCAL_STATIC_LIBRARIES中,并按位置逆向排列。则不报错。

 

关于undefined reference to '__kmpc_fork_call'

undefined reference to '__kmpc_for_static_init_4'

undefined reference to '__kmpc_global_thread_num'  等初始的问题,要在主函数对于.mk文件中加入LOCAL_FLAG += -fopenmp

 

LOCAL_CXXFLAG += -fopenmp

 

LOCAL_LDLIBS += -fopenmp

并且将NDK_TOOLCHAIN_VERSION=4.9加入注释。

 

在添加安卓项目时用到git。创建分支,把待上传文件加入commit中。此时在本地,然后在git中选取push。选择commit文件加入。

 

添加ncnn端的mtcnn。https://github.com/LicheeX/MTCNN-NCNN.git  对include和lib选取对应的编译好的ncnn下的库和头文件。选取mac模式,跑通。

 

VS2017配置最新的ncnn. 要照wiki中给好的文字操作。错误在一,cmake正常却缺少C/C++环境,在VS2017的x64工具命令行下运行。确保命令和路径的正确,尤其是在ptorobuf下的build-vs2017路径写入时。

你可能感兴趣的:(deeplearning)