java, System.loadlibrary ("someDLLFile") 获取未统计的链接错误

标签 java c++ windows dll java-native-interface

我已经将一些 JNI Hook 编写到 C++ 库中,并为我的 Java 服务器项目创建了一些 DLL 文件。假设 DLL 和 jar 文件位于“C:/server”下的同一文件夹中

我正在使用以下方法访问这些 DLL 文件:

System.loadLibrary("someDLLFile");

在需要 C++ 代码的类中。

我遇到的问题是,当我在自己的机器上运行这个服务器时,无论我将“服务器”文件夹放在哪里,一切都正常。但是当我把它交给同事测试时,他们不断得到:

java.lang.UnsatisfiedLinkError no someDLLFile in java.library.path

我希望 DLL 文件与 jar 文件位于同一文件夹中,并且不希望有人配置其 PATH 变量。

为什么 System.loadLibrary() 在我自己的机器上工作而不管文件夹的位置,但在另一台电脑上却不行?

最佳答案

之所以有效,是因为 DLL(或它所依赖的 DLL,即 msvcr90.dll 或其他东西)在您机器上的 PATH 中,但不在另一台机器上。

要么设置 PATH env-var 或 java.library.path 属性以包含文件的目录,要么将 dll 存储在 java 默认找到它的位置(此处有许多选项,具体取决于部署策略和平台)。

关于java, System.loadlibrary ("someDLLFile") 获取未统计的链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1029559/

相关文章:

windows - 在系统启动时依次启动 cmd-scripts

c++ - 有没有办法嵌入Windows保存对话框

java - "If statement"连续检查for循环索引数的倍数

java - 如何在 Java 中获取动态 RadioButton 工具提示?

c++ - 运算符的正确使用 >> 在同一输入流上的后续时间

c++ - 简单问题: Passing object with state, C++

c++ - 如何打印与特定值对应的元素的总和?

c++ - 如何从装饰名称中取消装饰名称?

Java Date toInstant 方法返回不同的日期?

java - 如何在 Spring Boot 中持续接收并解析来自 REST API 的 JSON