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

如何在Java代码中使用使用.dll并从中返回对象的函数?,java,c++,dll,Java,C++,Dll,我需要使用由.dll和.h文件组成的API。在Java代码中。 我发现我可以使用JNI来加载和访问.dll文件,但是我是JNI的新手,我对C++和.dll了解不多,而且它有点困难。 我需要从那些.dll文件中调用函数(返回或使用C++对象/类),我想知道是否有java库使这个过程更容易。 如果有人能提供一些示例或教程的链接,详细说明如何从.dll文件调用不同的函数,我将不胜感激 编辑: 好的,所以基本上我只有一个.dll库(而不是一个.so文件或linux的源代码)。有没有办法让java加载.d

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

编辑:


好的,所以基本上我只有一个.dll库(而不是一个.so文件或linux的源代码)。有没有办法让java加载.dll文件?例如:可以在Linux系统上安装java runtime For windows并与wine一起运行吗?因此,这将决定java为该库加载.dll文件吗?

JNA应该使这更容易


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