如何在 Java 代码中使用从 .dll 使用和返回对象的函数?

Posted

技术标签:

【中文标题】如何在 Java 代码中使用从 .dll 使用和返回对象的函数?【英文标题】:How to use functions that use and return objects from a .dll in Java code? 【发布时间】:2012-03-05 14:06:31 【问题描述】:

我需要使用由 .dll 和 .h 文件组成的 API。在 Java 代码中。 我发现我可以使用 JNI 来加载和访问 .dll 文件,但我是 JNI 的新手,我对 c++ 和 .dll 了解不多,而且接缝有点困难。 我需要的是从这些 .dll 文件中调用函数(返回或使用 C++ 对象/类),我想知道是否有 Java 库可以使这个过程更容易。 如果有人能提供一些示例或教程的链接,详细说明如何从 .dll 文件中调用不同的函数,我将非常棒。

编辑:

好的,所以基本上我只有一个 .dll 库(对于 linux,没有 .so 文件或源代码)。有没有办法让java加载.dll文件?例如:可以在 Linux 系统上安装和运行 windows 的 java 运行时吗?那么,这会决定 java 加载该库的 .dll 文件吗?

【问题讨论】:

【参考方案1】:

JNA 应该让这更容易。

https://github.com/twall/jna

【讨论】:

是的。 JNA 是要走的路,恕我直言。 我也找到了这个库。接缝很酷。一个问题:它是否有特定于平台的问题?示例:如果我创建一个加载 .dll 并使用其功能的 java 应用程序,它会在 windows 和 linux 上运行吗?如果没有,有什么限制或葡萄酒会帮助我吗? 我没用过。看起来它可以跨平台工作。我认为,如果您试图通过 WINE 调用 linux 上的 DLL,那么您将进入泥泞的水域。我对 WINE 的工作原理知之甚少,无法知道这是否可行。更好地研究这部分。 好吧,如果 .dll 库不使用特定于 Windows 的调用,那么一切都应该没问题吧? 您将 WINE 指向一个 exe,而不是 DLL。您必须使用 wine 运行 java.exe。我怀疑这会起作用,因为 JVM 是如此复杂。您可能会创建一个 exe 来调用您使用 WINE 运行的 DLL 并让 Java 调用它。我已经做到了,而且效果很好。

以上是关于如何在 Java 代码中使用从 .dll 使用和返回对象的函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用从 dll 在 Java 端声明的 log4j 记录器

如何在 Delphi 中调试从 Java 调用的 DLL?

如何在 Ruby 中使用 Win32API 从 DLL 返回字符串

如何从 C 代码正确创建 DLL 并在 C++ 项目中使用它

在java中使用C# dll [重复]

如何使用断点编辑dll