如果在linux上,可以参考下面的guide搭建ncnn的编译框架

https://github.com/Tencent/ncnn/wiki/how-to-build#build-for-linux-x86 (Build ok)

 

 

使用的sample是

Sample: ncnn-android-styletransfer

https://github.com/nihui/ncnn-android-styletransfer

 

参考guide进行编译sample apk。有几个地方需要注意,还会有几个错误需要fix。

##前置条件

Ubuntu16.04,Android Studio(在window下编译apk也可以用)

 

##库和头文件引用

###1 可以使用绝对路径

set_target_properties(ncnn PROPERTIES IMPORTED_LOCATION /local/mnt/workspace/xxxx/ncnn/ncnn/build-android-aarch64/install/lib/libncnn.a)

include_directories(/local/mnt/workspace/xxxx/ncnn/ncnn/build-android-aarch64/install/include/ncnn)

 

###2 也可以使用相对路径,需要将lib文件和头文件copy到项目目录,注意需要在jni目录下,路径错误会有编译error提示路径

set_target_properties(ncnn PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/lib/${ANDROID_ABI}/libncnn.a)

include_directories(${CMAKE_SOURCE_DIR}/include/ncnn)

 

ncnn-android-styletransfer-master\app\src\main\jni\lib\arm64-v8a

ncnn-android-styletransfer-master\app\src\main\jni\lib\armeabi-v7a

ncnn-android-styletransfer-master\app\src\main\jni\include\ncnn

 

###3 lib的类型要合适,并和头文件是一套。自己编译的库文件使用不了,用了官方提供的ncnn-android-vulkan-lib.zip。(不匹配有编译错误如error: no member named 'create_gpu_instance' in namespace 'ncnn')

 

 

##error: no member named 'create_gpu_instance' in namespace 'ncnn'

这个问题除了上面介绍的匹配库文件之外,还要在jni文件加上

#include “gpu.h”

 

## dlopen failed: library "libomp.so"

安装的应用不能启动

Refer to

https://github.com/Tencent/ncnn/issues/976#issuecomment-592394493

https://github.com/android/ndk/issues/1028

add it in the CMakeLists.txt

target_link_libraries (styletransferncnn -static-openmp -fopenmp)

 

##在有的机型上转换图片,应用会退出

尚未分析log

 

## 运行结果

ncnn的环境搭建和sample运行--ncnn-android-styletransfer(ncnn android, ncnn windows)

 

## 调用流程

其UI部分的流程比较简单,就是在actitity里面初始化,通过按钮触发对应的api实现功能。

 

ncnn的环境搭建和sample运行--ncnn-android-styletransfer(ncnn android, ncnn windows)

相关文章: