JNA调用dll问题

Unable to load library ‘XXX.dll’: Native library (win32-x86/XXX.dll…

这是我第一次遇见这个问题,找了很多天,希望能给您提供思路!!!
JAN调用dll :
问题一:关于JDK 与 dll文件 32位/64位的问题
参考:https://blog.youkuaiyun.com/sychel/article/details/54884132
通过cmd–>java -version 查看JDK(下图为32位)
在这里插入图片描述
查看dll文件可以使用工具查看 如果没有工具请
参考:https://blog.youkuaiyun.com/u012611644/article/details/83060983
问题二: 注册(regsvr32 XXX.dll)
我这边是将第三方给的压缩包全部复制到\windows\system32下 (可能会出现需要管理员权限的问
题,user32.dll 与msvcp60.dll 复制不进去)如果出现兼容问题 请在cmd上右键 以管理员身份运
行,然后注册,如果还是有问题可以试着 进入(cd) \windows\sysWOW64下注册(我这边出现
下图中的错误 ,但已经注册成功了!如果有人知道为什么请指点 我是小白一个)
在这里插入图片描述
问题三:下载JNA
我这边是用的springBoot 在pom.xml文件中加入配置 如果不是请下载JNA的jar包!

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

将dll文件与新建的类放在一个包下并测试

public class HelloWorld {
		public interface CLibrary extends Library {
			String dllPath = CLibrary.class.getResource("").getPath().replaceFirst("/","").replaceAll("%20"," ")+"zhiGongHiscomminterface.dll";
			CLibrary INSTANCE = (CLibrary)Native.loadLibrary(dllPath,CLibrary.class);
	    }
			public static void main(String[] args) {
	        System.out.println(CLibrary.dllPath);
	        System.out.println("===============================");
	        System.out.println(CLibrary.INSTANCE);
	    }
	}

** 问题四:左斜杠 与 右斜杠
我最后在服务器上加载dll文件是 测试路径的dllPath 加载不到(这个是左斜杠的)当我把路径的左斜杠改为由斜杠时就可以加载到(不明白为什么(>_<) ! )
注:左斜杠为单线 右斜杠为双线

========================================================
关于java加载dll文件的问题,后续经高人指点,有了新的变化

首先需要确认一个问题 我的dll在jdk32位的环境下可以使用 但是换成jdk64位就会出现问题,百度上说这个需要看dll文件编译时是 32位的还是 64 位的。这个问题我最后将jdk换成了32位的。

调用dll:
首先将dll放置在任意文件夹下
然后在环境变量中配置刚刚放置dll文件的路径,确保可以找到dll ,(这样就不用将dll文件放在window系统的system32下了)
然后在Java程序中直接调用文件名就可以了(下面的zhiGongHiscomminterface.dll为文件名)

CLibrary INSTANCE = (CLibrary)Native.loadLibrary(”zhiGongHiscomminterface.dll“,CLibrary.class);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值