实现JNI应用程序以使用dll方法而无需实现

时间:2013-07-31 07:50:42

标签: java java-native-interface

我的目的是创建一个Java应用程序来使用dll中的方法。

对于我一直在阅读的内容,简而言之,使用JNI的过程包括:在Java中声明本机方法,生成.h文件,然后使用实现编写ac或cpp文件来创建dll

但我的问题是我有一个dll,它是一个有很多方法的大型库。我知道这些方法的接口。但我不想实施它们。我想使用DLL来避免使用这些方法。我知道将它用作dll可能会提高性能。但在我的情况下,我想使用它只是因为我想使用其他方完成的代码。

我错过了什么吗? 是否可以使用JNI或任何其他Java接口来使用dll方法,但是跳过编码部分?

非常感谢。

2 个答案:

答案 0 :(得分:2)

如果您没有使用lib的问题,我建议使用JNA。它具有更灵活的dll访问API。至少我喜欢使用它。

你可以在这里找到例子: https://github.com/twall/jna/tree/master/www 因此,您只需要加载dll,并且只需从java调用一些接口即可获得所需的内容。

也许这个博客也可以帮助你:http://jnaexamples.blogspot.de/2012/03/java-native-access-is-easy-way-to.html

答案 1 :(得分:1)

你可以

  • 使用JNA approach。 JNA的优点是不需要本机代码 - 动态调用要包装的DLL中的方法。

  • 实现一个包装器DLL,它实现JNI方法,然后从DLL调用实际方法。如果您因任何原因不能使用JNA库(例如由于许可限制),这将是正确的方法