尝试使用Java(JNA)中的DLL.无法加载库异常

Kar*_*oss 12 java dll jna

我有来自教程的 NetBeans项目 导致异常:

线程"main" java.lang.UnsatisfiedLinkError: Unable to load library 'simpleDLL'中的异常:找不到指定的模块.

试图将simpleDLL.dll放在项目库中,在system32文件夹中复制文件没有成功.

Bac*_*ash 12

我在加载DLL时遇到了同样的问题,我用这种方式解决了它:

  • 正如Christian Kuetbach所说,检查你使用的simpleDLL是否与你的处理器架构兼容,32位DLL不能在64位机器上运行,而且64位DLL也不适用于32-钻头机.
  • 如果DLL兼容,那么问题可能出在您的java库路径中.我把我的DLL放到user.dir目录中,然后我使用了这段代码:

    将Java库路径设置为user.dir或者可能是您想要的另一个路径:

    String myLibraryPath = System.getProperty("user.dir");//or another absolute or relative path
    
    System.setProperty("java.library.path", myLibraryPath);
    
    Run Code Online (Sandbox Code Playgroud)

    加载库:

    的System.loadLibrary( "libraryWithoutDLLExtension");

它对我有用,尝试并告诉我它是否适合你.

  • 我尝试评论所有"主要"代码并将其替换为:`System.loadLibrary("simpleDLL");`它说:`线程中的异常"main"java.lang.UnsatisfiedLinkError:无法加载IA 32位.dll在AMD 64位平台上.这意味着已找到dll****但由于我有一台x64机器无法加载它,它不能与您链接的网站中找到的示例一起使用,但是System.loadLibrary它的工作原理.我建议你尝试使用JNI而不是JNA来实现DLL,我总是使用JNI并且没有DLL链接的问题 (2认同)

Chr*_*ach 5

请检查simpleDLL是32位还是64位.然后检查,如果JVM也是32位或64位.他们必须是同一个平台.

如果更改loadLibrary()load():http: //www.chilkatsoft.com/p/p_499.asp,也可以指定绝对路径