从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的交互。     
        使用BridJ,您可以将DLL / .so / .dylib与JAR捆绑在一起,但必须将其(或它们)放在JAR中特定于平台的特定路径中,该路径以\“ org / bridj / lib / \”,并以platform + architecture标识符结尾。 这是BridJ自己的源代码树,展示了这种本地捆绑方案: org / bridj / lib资源目录 如果您遵守此约定,则无需处理PATH,LD_LIBRARY_PATH或文件提取:
BridJ.register()
(在带有本机方法的带有
@Library
注释的类上调用)将为您完成所有工作!     

要回复问题请先登录注册