2013-06-27 12 views
0

我有一個庫中的現有.c和.h文件。我希望能夠從Java調用c文件中包含的函數。我知道這需要JNI,並且我非常瞭解如何修改.c和.h文件以使它們能夠與JNI一起使用。我不完全明白該怎麼做,或者甚至是JNI的目的,是創建一個簡單的JNI庫,然後我可以將它包裝到另一個Java應用程序中。我想創建接口;將C API擴展爲Java,以便我可以在那裏使用它。最終的結果會是這樣的:someCmethodInSomeJNILibrary()位於一些jnilib類文件中。我如何創建一個簡單的JNI庫,我可以簡單地調用方法

在此先感謝

+0

JNI創建JVM需要正確調用C代碼的信息。要正確對待並不容易。也許JNA會更容易工作? –

+0

看到這個http://marakana.com/bookshelf/java_fundamentals_tutorial/_java_native_interface_jni.html – qwr

+0

谷歌可以給你一些答案! –

回答

1

首先,您不妨考慮使用JNA。 JNA將允許您在不編寫其他本地代碼的情況下進行交互。如果您已經擁有一個庫並且不想構建另一個庫,這非常方便。

用JNI,所需的步驟包括:

  • 設計與C代碼交互的本機方法的Java API。
  • 使用javah爲Java本機方法生成C存根。
  • 將C存根粘貼到您的C代碼。
  • 生成包含本地方法函數和原始C代碼的動態/共享庫。
  • 使用Java加載該共享庫。

更多詳細信息可以在JNI文檔中的"Compiling, Loading, and Linking Native Methods"中找到。

相關問題