zoukankan      html  css  js  c++  java
  • 关于在centos7 64为引用android so引发的问题修复

    背景: 公司有解码的app,解码库位c++编写so动态库. 之前做过一版在调用html5摄像头,然后提取图像进行解码,后面因为图像质量不佳放弃.

            最近 因为小程序api有更新 可以获取到相对清晰的图像,所以有重启了.

            前端使用微信的小程序的直播流  后端截取直播流的图像帧,解析帧的数据,进行解码.

            但是遇到问题,在springboot调用so动态库 踩了不少坑.

           1.so库不兼容,旧版html5已是两年前做的demo版,so库的来源不清楚了。现在没办法 直接把andorid app中的so 放到程序lib目录下 发现报找不到so

           2.so库路径不对  linux so动态库 要放置在/usr/lib 或/usr/lib64/目录下

           3.springboot程序 包名问题,调用so库的类 的包名 需与so库 命名规则一致 参照android调用jni

           4.由于库不兼容 需要重新编译 使用android 编译的库无法使用 需在centos7下编译so库

              a.下载android ndk 并设置环境变量  在命令行 执行ndk-build测试

              b.将c++文件编译成so动态库

                 gcc -I /home/ndk/android-ndk/sysroot/usr/include  xx.c xx.cpp xx.cpp xx.cpp -fPIC -shared -o libxx.so

                 -I 需引入ndk下的声明文件 例如jni.h 因为c或cpp中有引用android ndk

                xx.c xx.cpp xx.cpp xx.cpp  编译多 直接引入

                -fPIC -shared 需要添加

               -o 输出动态库

  • 相关阅读:
    1059. Prime Factors (25)
    mybatis中resultType和resultMap的区别
    Spring Boot中使用Swagger2构建强大的RESTful API文档
    ES6之6种遍历对象属性的方法
    QQ授权登录
    nodejs爬虫入门
    nrm -- NPM registry 管理工具(附带测速功能)
    Sublime Text 3 使用MarkDown编写带预览的文本
    js中字符串函数indexOf与search的区别
    linux基础入门
  • 原文地址:https://www.cnblogs.com/John5/p/10319588.html
Copyright © 2011-2022 走看看