从C头文件生成Java接口

我们有一些我们需要与之接口的专有库.这些库是
Windows DLL或
Linux .so文件.我们得到了标题来定义接口.由于我从未对本机库进行任何操作,因此我查看了JNAerator(http://code.google.com/p/jnaerator/)以及BridJ和JNA的内容.

使用C头文件和编译的lib生成接口的简单方法是什么?例如,通常采用JNA,例如:

SomeDLL lib = (SomeDLL) Native.loadLibrary("some_dll", SomeDLL.class);

我必须将DLL保留在某处:如何将DLL与Jar捆绑在一起?我使用Maven来构建Jar文件……但Native.loadLibrary接口不允许直接指定路径.

最佳答案 JNI编码通常是编写C代码以创建本机粘合方法的手动过程.有一整本书可以解释它.

在某些情况下,http://jna.java.net/可以自动化或加速此过程,但不要指望它.

除非您沿着使用OSGi或类似Tanukisoft打包工具的方式走下去,否则您无法“捆绑本机库”,因此Java中没有用于此目的的内置功能.

您可以使用-Djava.library.path连接点以告诉java在何处查找本机库,或使用允许您指定完整路径的System.loadLibrary的较低级API.

如果您的本机库依次具有依赖关系,请注意与PATH和LD_LIBRARY_PATH的交互.

点赞