当前位置: 首页 > article >正文

海康 Java SDK 升级 JNA 版本

海康 Java SDK 依赖 JNA 3.0.9,业务中已经使用了更高版本的 JNA,所以需要升级,记录一下从 JNA 3.0.9 升级 JNA 5.15.0 的方法。

海康 Java SDK 核心类是 HCNetSDK,JNA 升级需要处理继承自 com.sun.jna.Structure 类,覆盖 getFieldOrder 方法。一个个改是极不方便的,所以参考大华定义一个 SdkStructure 类来继承 Structure 并覆盖 getFieldOrder 方法,然后将继承 Structure 的类改为继承 SdkStructure 。下面是具体步骤:

  1. 打开 HCNetSDK.java 类,将 Structure 替换成 SdkStructure
  2. 将 SdkStructure 类定义放到 1147 行。位置可随意,只是1147 行前面都是常量定义,1147 开始是类定义。
    class SdkStructure extends Structure {
        @Override
        protected List<String> getFieldOrder() {
            List<String> fieldOrderList = new ArrayList<>();
            for (Class<?> clazz = getClass(); !clazz.equals(SdkStructure.class); clazz = clazz.getSuperclass()) {
                Field[] fields = clazz.getDeclaredFields();
                int modifiers;
                for (Field field : fields) {
                    modifiers = field.getModifiers();
                    if (Modifier.isStatic(modifiers) || !Modifier.isPublic(modifiers)) {
                        continue;
                    }
                    fieldOrderList.add(field.getName());
                }
            }
    
            return fieldOrderList;
        }
    
        @Override
        public int fieldOffset(String name) {
            return super.fieldOffset(name);
        }
    }
  3. 修改 PlayCtrl.FRAME_INFO,继承 HCNetSDK.SdkStructure

http://www.kler.cn/a/553121.html

相关文章:

  • Weblogic 反序列化漏洞深度剖析与复现
  • 单片机原理与运用
  • 编译linux SDK
  • 同步异步日志系统-设计模式
  • 使用 Mammoth.js 渲染 Word 文档为 HTML:详细教程
  • linux查看程序占用的本地端口
  • 【雅思博客05】New Guy in Town
  • 撕碎QT面具(7):container控件被spacer挤扁,无法进行控件添加的处理方案。
  • 计算机网络抄手 运输层
  • AI浪潮下的前端开发:ScriptEcho助力你乘风破浪
  • 机器学习面试题汇总
  • vue stores全局状态共享
  • RESTful 的特点与普通 Web API 的区别
  • 23种设计模式之《工厂方法模式(Factory Method)》在c#中的应用及理解
  • 内存泄漏是什么?
  • Secured Finance携手Axelar及Squid提升流动性,迎接USDFC主网
  • 问卷数据分析|SPSS实操之相关分析
  • Python JSON的深度解析:从基础到应用
  • Android 平台GB28181设备接入实战指南
  • 高德地图android sdk(备忘)