Android导入yolov3中:NDK编译JNI so库出错 求助

VIM Android NPU JNI使用,编译libnn_yolo_v3.so时报错:
jni/include/vnn_yolov3.h:24:1: error:
‘assert_failed_CASE_VERSION_is_higher_than_OVXLIB_VERSION_25’ declared as
an array with a negative size
_version_assert(VNN_RUNTIME_VERSION <= VSI_NN_VERSION

@purplepetal is your code from GitHub - khadas/khadas_android_npu_library ?

对,按照 零基础导入自己YOLOv3或YOLOv3-Tiny模型 - VIM3 - Khadas Community这篇搞的

you can ask @goenjoy for help

@goenjoy 请求帮助
凑字数凑字数凑字数

@purplepetal 执行下面命令并贴出结果:

cat khadas_android_npu_library/model_code/detect_yolo_v3/jni/include/vnn_yolov3.h
cat ~/.bashrc

@goenjoy
vnn_yolov3.h

.bashrc




能看到我最后加了那两行

你的代码跟我的代码不同,你自己跟踪下吧。我的代码如下图所示:
khadas_android_npu_library\model_code\detect_yolo_v3\jni\include\vnn_yolov3.h

#define VNN_VERSION_MAJOR 1
#define VNN_VERSION_MINOR 1
#define VNN_VERSION_PATCH 26
#define VNN_RUNTIME_VERSION \
    (VNN_VERSION_MAJOR * 10000 + VNN_VERSION_MINOR * 100 + VNN_VERSION_PATCH)

khadas_android_npu_library\model_code\detect_yolo_v3\jni\applib-ovxinc-include\vsi_nn_version.h

#define VSI_NN_VERSION_MAJOR 1
#define VSI_NN_VERSION_MINOR 1
#define VSI_NN_VERSION_PATCH 27
#define VSI_NN_VERSION \
    (VSI_NN_VERSION_MAJOR * 10000 + VSI_NN_VERSION_MINOR * 100 + VSI_NN_VERSION_PATCH)

@goenjoy
vnn_yolov3.h是完成模型导入量化操作后 生成case代码 时生成的,替换了khadas_android_npu_library原本的文件,VNN_VERSION_PATCH 原本26 生成的是30
而且对比了原本的文件和生成的文件,只有VNN_VERSION_PATCH不一样,(感觉不能随意改,否则这个替换操作没有意义了

vsi_nn_version.h是khadas_android_npu_library原本的文件,VSI_NN_VERSION_PATCH 27
这个VNN_RUNTIME_VERSION 如果大于 VSI_NN_VERSION,不能编译so库吗
还是说vsi_nn_version.h中的VSI_NN_VERSION_PATCH可以自己改? 不清楚这个VSI_NN_VERSION_PATCH是用来干什么了

我用的 darknet/yolov3.cfg at master · pjreddie/darknet · GitHub
https://pjreddie.com/media/files/yolov3.weights 和https://github.com/pjreddie/darknet/blob/master/data/dog.jpg 来按照 零基础导入自己YOLOv3或YOLOv3-Tiny模型 文档yolov3部分操作的
我这个部署比较急,可以帮忙看看吗,或者是我生成的case代码是有问题的?(过程中一直没报错

@purplepetal 直接修改版本看下。两者中修改其中之一。这影响应该不大。