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

这是我第一次遇见这个问题,找了很多天,希望能给您提供思路!!!

JAN调用dll :

问题一:关于JDK 与 dll文件 32位/64位的问题

通过cmd–>java -version 查看JDK(下图为32位)

如何打开jnlp文件 jnlp文件无法打开_斜杠


问题二: 注册(regsvr32 XXX.dll)

我这边是将第三方给的压缩包全部复制到\windows\system32下 (可能会出现需要管理员权限的问

题,user32.dll 与msvcp60.dll 复制不进去)如果出现兼容问题 请在cmd上右键 以管理员身份运

行,然后注册,如果还是有问题可以试着 进入(cd) \windows\sysWOW64下注册(我这边出现

下图中的错误 ,但已经注册成功了!如果有人知道为什么请指点 我是小白一个)

如何打开jnlp文件 jnlp文件无法打开_斜杠_02


问题三:下载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);