java - 在 Java 中加载 DLL - Eclipse - JNI

标签 java eclipse java-native-interface

我正在尝试使用以下代码在 java 中加载一个 dll System.loadLibrary("mydll");

项目放在D:\development\project\,我把dll放在了D:。然后我在 eclipse 配置中给出了以下 VM 参数 -Djava.library.path=D:/

但是当我运行时,我得到了 UnsatisifiedLinkerError。谷歌搜索了一下后,我用 System.load("D:\mydll.dll");

但又遇到同样的问题,有人可以帮忙吗?

最佳答案

在库路径中指定 DLL 文件名的地方,省略它。此外,您的 System.loadLibrary 调用应该只是“mydll”。我可以(根据经验)告诉您,如果您将 DLL 放在 Eclipse 项目的根目录中(即 D:\Eclipse Workspace\Proj),它应该可以工作。任何进一步的链接器错误都可能来自查找其他 DLL 的依赖性问题。异常(exception)是一样的。使用 Dependency Walker (http://www.dependencywalker.com/) 之类的东西来查看您的 DLL 是否依赖于系统库路径之外的任何其他内容。

编辑:UnsatisfiedLinkError:如果 Java 虚拟机找不到声明为 native 的方法的合适的 native 语言定义,则抛出该错误——您似乎正在使用不存在的 JNI 函数。

关于java - 在 Java 中加载 DLL - Eclipse - JNI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2535700/

相关文章:

java - 应用程序崩溃,因为 Array 对于 ArrayAdapter 为 null

java - 是否可以在同一事务中捕获运行时异常并引发应用程序异常? (ejb)

eclipse - Tycho 功能/插件构建包含特定于平台的片段插件

java - 系统 loadLibrary 在多线程中使用时挂起

JavaSE 在列表中添加对象但对象发生变化为什么?

java - Java 中 String 函数的算法复杂度

java - 安装 Genymotion Eclipse 插件

java - eclipse-inst-win64.exe 无法打开

java - 在 Java 中加载静态编译的库

java - 将对象从 C++ 返回到 Java