springboot对jna的简单调用

依赖

		<dependency>
			<groupId>net.java.dev.jna</groupId>
			<artifactId>jna</artifactId>
		</dependency>

代码

import com.sun.jna.Library;
import com.sun.jna.Native;

public class Test {
	
	public interface CLibrary extends Library {
		// 定义并初始化接口的静态变量
		CLibrary TEST = (CLibrary) Native.loadLibrary("testdd", CLibrary.class);//testdd dll名称

		void test1();//dll中的方法名
		
	}
	
	public synchronized static void test() {
		System.setProperty("jna.encoding", "GBK");
		CLibrary.TEST.test1();
	}
	
	public static void main(String[] args) {
		test();
	}
}

运行结果截图
在这里插入图片描述
testdd传送门(需要的可以私聊我)
常见的问题及处理办法:
1.找不到指定的程序(调用dll方法名错误,不知道方法名的可用Dependency.exe查看)
查看dll方法名
2.无效的内存访问(两个原因导致:jdk的bin目录下没有放置对应的dll;方法调用数据传参对不上)
3.jdk的位数和dll的位数对不上(如:64位的jdk调用32位的dll会出现错误)
4.发布到服务器时我遇到了一个奇怪的问题,实现层直接用类名调用dll方法会出现无法找到dll方法所在的这个类。我的解决办法是把调用dll的这个类先new出来再进行调用问题成功解决,但一直没有想明白为什么,有大佬帮我解答一下吗?

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值