如何创建一个简单的JNI库,我可以简单地从中调用方法

时间:2013-06-27 19:21:11

标签: java c java-native-interface

我有一个来自库的.c和.h文件。我希望能够从Java调用c文件中包含的函数。我知道这需要JNI,并且我非常了解如何修改.c和.h文件以使它们与JNI一起工作。我不完全理解如何做,或者甚至是JNI的目的,是创建一个简单的JNI库,然后我可以将其包装到另一个Java应用程序中。我想创建界面;将C API扩展为Java,以便我可以在那里使用它。最终的结果是:someCmethodInSomeJNILibrary()位于某些jnilib文件中。

提前致谢

1 个答案:

答案 0 :(得分:1)

首先,您可能希望考虑使用JNA。 JNA允许您在不编写其他本机代码的情况下进行交互。如果您已经拥有一个库并且不想构建另一个库,这将特别方便。

使用JNI,所需的步骤包括:

  • 设计用于与C代码交互的本机方法的Java API。
  • 使用javah为Java本机方法生成C存根。
  • 将C存根粘贴到您的C代码中。
  • 生成包含本机方法函数和原始C代码的动态/共享库。
  • 在Java中加载该共享库。

可以在JNI文档中的"Compiling, Loading, and Linking Native Methods"中找到更多详细信息。