jna中出现错误解决方案。

jna中出现错误解决方案

  • 为什么会出现这些错误之JNA版本的锅
  • 不要手动导入jar包,使用maven
  • 切换高版本会出现的错误
    • Structure.getFieldOrder() on class 错误
    • java.lang.IllegalArgumentException: Invalid calling convention 63 错误

为什么会出现这些错误之JNA版本的锅

  可能是我们在参考或使用一些老的项目提供的demo时候,用到了jna版本比较低。比如海康的SDK或者一些星浩喇叭的SDK需要和设备对接的项目等…

不要手动导入jar包,使用maven

  好处是不用自己打入包,第二就是老版本中提供的jna没有支持像:linux-aarch64这种版本。

 <!-- https://mvnrepository.com/artifact/net.java.dev.jna/jna --><dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId><version>5.14.0</version></dependency>

切换高版本会出现的错误

Structure.getFieldOrder() on class 错误

  原因: 高版本需要重写getFieldOrder()方法
  报什么错,你就按照报错的顺序在对应的静态类中加上
这里我遇到一个坑就是加上@Structure.FieldOrder({})后发现解析的数据对不上。如果你也遇到了,请一定安装类中属性顺序去写。特别是星浩的喇叭!

@Structure.FieldOrder({"xxx1", "xxx2" })

  以下是一个示例:

@Structure.FieldOrder({"AlmInMask", "AlmInState", "AlmOutMask", "AlmOutState", "dwTermID", "eTermState"})public static class TSdkPostTermState extends Structure {public int dwTermID;public int eTermState;public byte AlmInMask; public byte AlmInState;  public byte AlmOutMask;  public byte AlmOutState; }

java.lang.IllegalArgumentException: Invalid calling convention 63 错误

原因:
  1、接口继承了StdCallLibrary,而不是Library。
  2、接口中用到了回调函数,回调函数继承了StdCallLibrary.StdCallCallback。
  简单来说就是你开发平台是windows,你的线上环境是linux
错误示例:

#错误示例
import com.sun.jna.win32.StdCallLibrary.StdCallCallback;public interface CtsSdk extends StdCallLibrary {public interface OnCtsSdkCallBack extends StdCallCallback {public int invoke(int eCbType, Pointer pParam, int dwSize, int 		usr_data) throws IOException, ClassNotFoundException;}
}

正确示例:

#正确示例
public interface CtsSdk extends Library {public interface OnCtsSdkCallBack extends Callback {public int invoke(int eCbType, Pointer pParam, int dwSize, int usr_data) throws IOException, ClassNotFoundException;}
}

#参考
jna实战,部署踩坑

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/4871.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人体跟随小车(旭日x3派,yolov5,ros2)

最终现象 人体跟随 策略 底盘主控是stm32f103c8t6&#xff0c;读取左右轮编码器并标定速度&#xff0c;读取mpu6050的yaw值一并传至上位机。上位机通过usb摄像头捕获图像&#xff0c;送入模型进行推理&#xff0c;根据得到的结果生成控制指令下发给底盘进行人体跟随。

【MySQL】redolog、undolog和binlog日志文件详解

【MySQL】redolog、undolog和binlog日志文件详解 前言redolog设计目标记录内容写入策略 undolog设计目标记录内容写入策略 binlog设计目标记录内容写入策略 小结 前言 当谈论MySQL数据库的日志文件时&#xff0c;通常会涉及到三种主要类型&#xff1a;redo log&#xff08;重做…

使用Python进行自然语言处理:情感分析

使用Python进行自然语言处理的热门应用:情感分析 自然语言处理(NLP)是人工智能领域中的一个重要分支,它致力于使计算机能够理解、解释和生成人类语言。在NLP的诸多应用中,情感分析是一项备受关注的热门应用之一。情感分析(Sentiment Analysis)是通过分析文本中的情感色…

陪诊小程序开发:线上陪诊行业的发展

在人口老龄化的严重的当下&#xff0c;老人看病也更加困难&#xff0c;而陪诊行业作为一个新型行业&#xff0c;正在走入人们的生活中&#xff0c;帮助大众解决看病难等问题&#xff0c;为大众带来便捷高效的就医环境。 随着互联网时代的到来&#xff0c;各行各业也都开始向线…

FaceDiffuser 部署笔记

目录 依赖项安装&#xff1a; win11 ffmpeg合并报错 修改后代码&#xff1a; facebook/hubert-base-ls960报错 我的解决方法&#xff1a; DiffSpeaker网络音频编码器&#xff1a; 头模加载 transformers 依赖项安装&#xff1a; "tokenizers": "tokeniz…

设置Ollama在局域网中访问的方法(Ubuntu)

趁着Llama3的热度试了一下Ollama&#xff0c;果然部署推理大模型很有用。一个现实的需求是&#xff0c;如果我们要在局域网中访问Ollama上大模型的服务&#xff0c;应该怎么办呢&#xff1f;参考了一下其他博客的方法 例如&#xff1a;一分钱不花&#xff01;手把手教你部署Go…

Android system — 链接器命名空间共享库配置方法(Android 11后)

Android system — 链接器命名空间共享库配置方法 1. 应用进程1.1 应用进程类加载器的命名空间初始化1.1.1 OpenNativeLibrary1.1.2 LibraryNamespaces::Create 1.2 配置共享库位置 2. native进程2.1 native 命名空间配置初始化2.1.1 android_namespace_t::is_accessible2.1.2 …

清理docker缓存

要清理Docker缓存&#xff0c;你可以使用以下命令&#xff1a; docker system prune 这个命令会删除所有未使用的容器、网络、镜像(默认不包括Tag为none的)和悬空的镜像。如果你也想要删除所有未使用的镜像&#xff0c;不仅仅是悬空的&#xff0c;可以添加-a参数&#xff1a;…

swift语言学习总结

Var 表示变量&#xff0c; let表示常量。数组和map&#xff0c; 都用中括号[].可以直接赋值。可以用下标或键访问。 var shoppingList ["catfish", "water", "tulips", "blue paint”]//最后一个可以加逗号。 shoppingList[1] "bo…

Web开发中的网络安全: 常见攻击及防范策略

在Web开发的世界里&#xff0c;网络攻击是一种常见且潜在的威胁。理解这些攻击如何运作并采取措施防范它们对于构建安全的Web应用至关重要。本文将介绍几种常见的Web攻击&#xff0c;提供防范策略&#xff0c;并以实例说明如何防止这些攻击。 SQL注入 概要: SQL注入攻击是攻击…

Python+Selenium基于PO模式的Web自动化测试框架

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、什么是Selenium&#xff1f; Selenium是一个基于浏览器的自动化测试工具&#xff0c;它提供…

Linux pppstats命令教程:如何详解PPP连接的统计信息(附案例详解和注意事项)

Linux pppstats命令介绍 pppstats命令用于显示活动的PPP&#xff08;点对点协议&#xff09;连接的统计信息。这些统计信息包括发送和接收的数据包数量、压缩前和压缩后的数据量、IPCP和LCP协议的状态等。 Linux pppstats命令适用的Linux版本 pppstats命令在大多数Linux发行…

吴恩达机器学习笔记:第 8 周-14降维(Dimensionality Reduction) 14.3-14.5

目录 第 8 周 14、 降维(Dimensionality Reduction)14.3 主成分分析问题14.4 主成分分析算法14.5 选择主成分的数量 第 8 周 14、 降维(Dimensionality Reduction) 14.3 主成分分析问题 主成分分析(PCA)是最常见的降维算法。 在 PCA 中&#xff0c;我们要做的是找到一个方向…

C++与或运算规则

文章目录 前言问题1问题2 前言 在笔试中遇到c或与运算的问题&#xff0c;在这记录 问题1&#xff1a;2024.4.28 问题1 下面代码的运行结果&#xff1a; #include <iostream> using namespace std; bool fun1(char ch){cout<<ch<<" ";if(ch >a…

react-lib 读取本地模板创建PDF

读取本地文件和读取远程的一样&#xff0c;都使用fetch去获取 async function modifyPdf() {let url ./template.pdflet existingPdfBytes await fetch(url).then(res > res.arrayBuffer()) // 这里也有问题要转一下const d new Uint8Array(existingPdfBytes)const pdfDo…

dremio数据湖sql行列转换及转置

1、行转列 (扁平化) 数据准备 表 aa 1.1 cross join unnest 在Dremio中&#xff0c;UNNEST 函数用于将数组或复杂类型的列&#xff08;如JSON、Map或Array类型&#xff09;中的值“炸裂”&#xff08;分解&#xff09;成多行. with aa as ( select 上海 as city, ARRAY[浦东…

Centos7_miniconda_devtools安装_R语言入门之R包的安装

因为有同事反馈安装R包很慢或卡住&#xff0c;提供了一个安装R包的命令给我测试&#xff0c;在安装过程中复现报错信息&#xff0c;把下载慢或卡顿的链接中的域名在防火墙中调整出口。 devtools::install_github("GreenleafLab/ArchR", ref"master", repo…

LLaMA Factory多卡微调的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

How to solve matplotlib Chinese garbled characters in Ubuntu 22.04

conda create -n huizhou python3.8conda activate huizhouconda install numpy matplotlibpip install mplfontsmplfonts init# 导入必要的库 import numpy as np import matplotlib.pyplot as plt# 创建角度数组&#xff0c;从0到2π x np.linspace(0, 2 * np.pi, 100)# 计算…

使用逆滤波算法deconvwnr恢复图像回复图像时,产生了很多横竖条纹。解决办法

使用逆滤波算法deconvwnr恢复图像回复图像时&#xff0c;产生了很多横竖条纹。解决办法 原来的代码 % 清除工作空间并关闭所有图形窗口 clear; clc; close all;% 读取原始图像 original_image imread(pic3.jpg);% 显示原始图像 subplot(131); imshow(original_image); title…