这篇文章主要记录第一次在aarch64处理器部署海康SDK遇到的问题,开始在win环境没问题,在自己的VM部署也没问题,最后发上了公司的国产机就出现了以下一系列问题。
以下是本次遇到的问题总结:
1、aarch64处理器:需要下载aarch64类型的so动态链接库 (官方例子默认的不是aarch64)
2、docker部署问题:如果使用docker 部署不能直接访问宿主机的地址需要映射docker地址到宿主机,代码里面写宿主机的地址(不是docker部署的请忽略)
3、jna版本问题:海康官方给的jna版本3.0.9无法满足aarch64处理器类型动态库,需要升级到更高版本例如jna5.12.0版本
4、海康SDK本身问题:因为海康SDK本身依赖的jna版本比较低,所有引用高级的jna版本需要重写Structure方法然后在官方SDK HCNetSDK.java文件中的继承的Structure全部替换为HIKSDKStructure 下面是HIKSDKStructure的例子:
public class HIKSDKStructure extends Structure { protected List<String> getFieldOrder(){ List<String> fieldOrderList = new ArrayList<String>(); for (Class<?> cls = getClass(); !cls.equals(HIKSDKStructure.class); cls = cls.getSuperclass()) { Field[] fields = cls.getDeclaredFields(); int modifiers; for (Field field : fields) { modifiers = field.getModifiers(); if (Modifier.isStatic(modifiers) || !Modifier.isPublic(modifiers)) { continue; } fieldOrderList.add(field.getName()); } } return fieldOrderList; } }