最終更新:2018-11-06 (火) 14:33:40 (2357d)
JNI
Top / JNI
Java Native Interface
JavaのプログラムからC/C++言語などで開発されたネイティブコードのプログラムを利用するためのAPI
http://docs.oracle.com/javase/6/docs/technotes/guides/jni/
http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html
手順
- Javaコード作成
- javacでクラスファイル生成
- javahでインクルードファイル生成
- ネイティブメソッドを実装するために必要なCヘッダーとソースファイルを生成
- インクルードファイルを元にC/C++コード作成
- シェアードライブラリ作成
例
- ネイティブメソッド
JNIEXPORT void JNICALL Java_ClassName_MethodName (JNIEnv *env, jobject obj) { /*ネイティブコードをここに記述する*/ }
メソッド名変換
クラスとか
JNIEnv
- Your native functions all receive a JNIEnv as the first argument.
- JavaVMへのインターフェイスを含む構造体。
JavaVMオブジェクト
メモ
命名規則
- Java側のコードにアンダースコアが含まれる場合、C/C++側では"_1"とエスケープする
http://kotatsu52.hatenablog.com/entry/2012/08/12/150544