将DLL文件导入Eclipse Java项目

4
为了将DLL导入Eclipse Java项目,我检查了“java.library.path”。
String path = System.getProperty("java.library.path");
System.out.println(path);

其中一个 path 值等于 C:/Windows/System32。因此,我将 myAPI.dll 保存在 C:/Windows/System32 中。然后我调用了 System.loadLibrary

System.loadLibrary("myAPI.dll");

并且收到了以下错误信息:

Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: Expecting an absolute path of the library: myAPI.dll
    at java.lang.Runtime.load0(Unknown Source)
    at java.lang.System.load(Unknown Source)

顺便提一下,我试图将我的DLL文件放到不同的目录中,这些目录在path中提到。但每次都会收到相同的错误消息。怎么解决这个问题?


https://dev59.com/Im445IYBdhLWcg3w0NSu - Samir Mangroliya
1
我找到了解决方案:使用 System.loadLibrary("myAPI"); 而不是 System.loadLibrary("myAPI.dll"); - Klausos Klausos
3个回答

5
不要在你的库文件结尾加上“.dll”。这是Windows特定的扩展名,在其他系统上使用其他扩展名也能正常工作,因此加上扩展名是不正确的。只需加载“myAPI”,如果名称正确且其他信息保持原样,则它将可以正常工作。

1

一个选择是尝试将该dll保留在你的/eclipse系统库中使用的/jre/bin中,并能够在运行时配置dll文件,方法是将dll放置在/jre/bin中。

这是我能找到的最简单的方法。这对我有用。希望能帮到你:)


0
如果dll文件在您的项目文件夹中(例如,是您项目的一部分),即:
./prod/bin/myAPI.dll

如果您想在Eclipse中执行程序/单元测试,可以配置运行程序的运行时环境。转到“首选项/Java/已安装的JRE”,选择所需的JRE或JDK(注意:要加载32位dll,必须使用32位JRE,即使您的主机系统是64位系统),然后单击“编辑”。在“默认VM参数”框中输入。
-Djava.library.path="./prod/bin;${env_var:PATH}"

这将在系统路径的前面添加你的dll文件夹"prod/bin"(不用担心,它不是永久的,只是为所选JRE的环境)。

通过运行以下代码,您可以验证系统路径已更新并且可以加载dll:

        String path = System.getProperty("java.library.path");
        System.out.println(path);
        System.loadLibrary("myAPI");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接