JNI静的登録と動的登録コメント

JNI登録コードはC層のJavaコード呼び出しオブジェクト層を達成するために、方法のJava層(変性天然キーワード)とC層会合法を指します。JNI登録は、静的登録の二種類が固定フォーマットのメソッド名を介して関連しているれている静的登録と動的登録に分割されている動的な登録は、メソッド名との間の動的なマッピングを追加することによって、関連する簡単再生することができ、より柔軟な、我々は、動的な登録を使用することをお勧めします。登録を進める前に、あなたは(できるJavaアプリケーションを作成する)2つのClionツールをダウンロードして、日食する必要があり、我々は、登録を開始することができます。

静的登録

1.まず、日食に新しいJavaアプリケーション、名前は任意で作成し、そのようJavaJniを呼び出すなど、新しいJavaクラスRegister.java下CLZパッケージ、その後、CLZという名前のsrcディレクトリに新しいパッケージを作成し、クラスのネイティブメソッドを記述し、次のとおりです。

コマンドラインに2.は、コマンドのjavac Register.javaがRegister.classファイル生成に使用、Register.javaディレクトリの下に来
3.コマンドラインを、バックsrcディレクトリに、コマンドjavahはclz.Registerはclz_Register.h生成
で4をClion、選択されたC ++ライブラリ、ライブラリタイプを作成、共有、jni.h中jni_md.hファイルとファイルおよびJDK /コピーが含ま
第三のステップは、単に新しいClionで生成clz_Register.hしたファイルをコピーすることである5。プロジェクトの
次のように参照が6 jni.h中変更します。

  1. 新しいファイルclz_Register.cは、対応する機能を実現するために、clz_Register.hを導入した.h

  1. CMakeLists.txtにClionプロジェクトのビルド構成を追加

  • 最初のパラメータfirstlib、コンパイル後に生成される動的ライブラリの名前を示します
  • 2番目の引数は、それぞれ、STATICまたは共有を選択することができ、静的ライブラリや動的ライブラリで、我々は一般的に、動的ライブラリを使用
  • 3番目以降のパラメータは、ファイルストレージをコンパイルする必要性を表明しました

9.ビルドBuildProject Clionで選択cmakeのビルド・デバッグlibfirstlib.dylibで生成されてもよい(MAC dylibとして、DLLなどの窓)
10ステップ8 libfirstlib.dylib食LIBSディレクトリの生成項目をコピーします(新しい)
11. Register.javaにロードされるライブラリはなく、ライブラリ関数呼び出し

動的登録

  1. まず、その後、レジスタ、レジスタパッケージの新しいJavaクラスDynamicRegister.java、クラス、名前のsrcディレクトリに新しいパッケージを作成し、そのようJavaJniを呼び出すよう、Javaアプリケーション、名前は任意であり、新たな日食を作成するネイティブメソッドを書く次のとおりです。

  1. Clionでは、コピーされたjni_md.hファイルとファイルjni.h中、共有選択したC ++ライブラリ、ライブラリの種類を作成し、JDK /含ま
  2. DynamicRegister.c新しいファイル、および以下のように、2つのメソッドを実装しjni.h中紹介

  1. 動的登録を追加

  1. CMakeLists.txtにClionプロジェクトのビルド構成を追加

  • 最初のパラメータfirstlib、コンパイル後に生成される動的ライブラリの名前を示します
  • 2番目の引数は、それぞれ、STATICまたは共有を選択することができ、静的ライブラリや動的ライブラリで、我々は一般的に、動的ライブラリを使用
  • 3番目以降のパラメータは、ファイルストレージをコンパイルする必要性を表明しました

6. [(、dylibとしてMAC DLLなどのウィンドウ)をcmakeのビルド・デバッグlibfirstdylib.dylibで生成することができるClionで-BuildProjectを構築する
ステップ8は、Eclipseプロジェクトの下で生成されたlibfirstdylib.dylib libsディレクトリにコピーされます7。 (新しい)
8. DynamicRegister.javaにロードされるライブラリはなく、ライブラリ関数呼び出し

 

おすすめ

転載: www.cnblogs.com/GX1234/p/11611410.html