二、Android NDKプログラミング予備のJava jni入門Hello World
4892 ワード
回転元:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=264543&fromuid=588695
昨日はJNIを简単に绍介しました.今日はコードでJNIの実现プロセスを実现し、それぞれの心得を交流します.不适切な点があれば、の実现プロセスは主に昨日绍介したJavaからC/C++を呼び出す6つのステップです.Javaコード(Hello World)を作成EclipseでプロジェクトHello Worldを新規作成するには、まず独自のjavaコードを作成する必要があります.javaコードではnativeメソッドを宣言します.コードは非常に簡単です.以下に示す
コードクリップ、ダブルクリックコピー
01
02
03
04
05
06
07
08
09
10
11
12
13
注意:displayHelloWorld()メソッドの宣言には、java以外の言語で実装されていることを示すキーワードnativeがあります.方法には、c/c++言語で実装するため、実装は含まれません.システムに注意loadLibrary(「HelloWorld」)というコードは、静的初期化ブロックで定義され、hello共有ライブラリをマウントするためにシステムが使用する、これが後に生成されるHelloWorldである.dll(LinuxではHelloWorld.soなど、他のオペレーティングシステムが他の形式である場合)2.Javaコードのコンパイル:Eclipseまたは他のIDEが作成してくれました.自分でコンパイルする形式はjavacパッケージ名です.HelloWorld.JAva、だから私のプロジェクトは手動でコンパイルします:javac com.jackie.jni.HelloWorld.JAvaは対応するパッケージの下にあるHelloWorldを生成する.classファイル3.C/C++を作成する.hファイルヘッダのステップではjavahコマンドを使用して生成する.hファイルは、javah本プロジェクトの方法はdosウィンドウからプロジェクトホームに切り替える入力:javah-classpath bin com.jackie.jni.HelloWorld.プロジェクトホームでcom_が生成されましたjackie_jni_HelloWorld.hファイルの内容は以下の通りである.
コードクリップ、ダブルクリックコピー
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
ここでこれに対して.hファイルは簡単に説明します:native宣言の方法ごとにJava_があります.クラス名_パッケージ名(.)「」で置換)メソッド名はこれに対応する.C/C++コードを記述するこの部分でjavaで定義された方法をC/C++言語で実現するには、VC++にProjectを新規作成し、HelloWorldを作成します.cppファイル、内容は以下の通りです
コードクリップ、ダブルクリックコピー
01
02
03
04
05
06
07
08
09
10
5.共有ライブラリファイルを作成するこのVC++も手伝ってくれました.ここではincludeがjniになっていることに注意してください.hとさっき手に入れた「com_jackie_jni_HelloWorld.hファイル.VC++に設定してください.jni.hはJAVA_HOME/includeにあります.コンパイルが完了したらHelloWorld.dllファイルを生成します.6.Javaプログラムを実行して、上で生成したhello.dllファイルを私たちの作業ディレクトリにコピーします.このとき、私たちのディレクトリにはHelloWorld.java、HelloWorld.class、HelloWorld.dが含まれています.llファイル.Java HelloWorldコマンドを実行すると、コンソールにHello worldが表示されます.の出力です.(HelloWorld.classとHelloWorld.dllファイルは同じパッケージディレクトリの下にある必要があります)一、Android NDKプログラミング予備のJava jni概要:http://www.eoeandroid.com/thread-264384-1-1.html三、Android NDKプログラミング予備のJava jni入門作成C/C++共有ライブラリ:http://www.eoeandroid.com/thread-264971-1-1.html
昨日はJNIを简単に绍介しました.今日はコードでJNIの実现プロセスを実现し、それぞれの心得を交流します.不适切な点があれば、の実现プロセスは主に昨日绍介したJavaからC/C++を呼び出す6つのステップです.Javaコード(Hello World)を作成EclipseでプロジェクトHello Worldを新規作成するには、まず独自のjavaコードを作成する必要があります.javaコードではnativeメソッドを宣言します.コードは非常に簡単です.以下に示す
コードクリップ、ダブルクリックコピー
01
02
03
04
05
06
07
08
09
10
11
12
13
package
com.jackie.jni;
public
class
HelloWorld {
public
native
void
displayHelloWorld();
static
{
System.loadLibrary(
"HelloWorld"
);
}
public
static
void
main(String[] args) {
new
HelloWorld().displayHelloWorld();
}
}
注意:displayHelloWorld()メソッドの宣言には、java以外の言語で実装されていることを示すキーワードnativeがあります.方法には、c/c++言語で実装するため、実装は含まれません.システムに注意loadLibrary(「HelloWorld」)というコードは、静的初期化ブロックで定義され、hello共有ライブラリをマウントするためにシステムが使用する、これが後に生成されるHelloWorldである.dll(LinuxではHelloWorld.soなど、他のオペレーティングシステムが他の形式である場合)2.Javaコードのコンパイル:Eclipseまたは他のIDEが作成してくれました.自分でコンパイルする形式はjavacパッケージ名です.HelloWorld.JAva、だから私のプロジェクトは手動でコンパイルします:javac com.jackie.jni.HelloWorld.JAvaは対応するパッケージの下にあるHelloWorldを生成する.classファイル3.C/C++を作成する.hファイルヘッダのステップではjavahコマンドを使用して生成する.hファイルは、javah
コードクリップ、ダブルクリックコピー
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jackie_jni_HelloWorld */
#ifndef _Included_com_jackie_jni_HelloWorld
#define _Included_com_jackie_jni_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jackie_jni_HelloWorld
* Method: displayHelloWorld
* Signature: ()V
*/
JNIEXPORT
void
JNICALL Java_com_jackie_jni_HelloWorld_displayHelloWorld
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
ここでこれに対して.hファイルは簡単に説明します:native宣言の方法ごとにJava_があります.クラス名_パッケージ名(.)「」で置換)メソッド名はこれに対応する.C/C++コードを記述するこの部分でjavaで定義された方法をC/C++言語で実現するには、VC++にProjectを新規作成し、HelloWorldを作成します.cppファイル、内容は以下の通りです
コードクリップ、ダブルクリックコピー
01
02
03
04
05
06
07
08
09
10
#include <jni.h>
#include
"com_jackie_jni_HelloWorld.h"
#include <stdio.h>
JNIEXPORT
void
JNICALL
Java_com_jackie_jni_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
{
printf(
"Hello world!
"
);
return
;
}
5.共有ライブラリファイルを作成するこのVC++も手伝ってくれました.ここではincludeがjniになっていることに注意してください.hとさっき手に入れた「com_jackie_jni_HelloWorld.hファイル.VC++に設定してください.jni.hはJAVA_HOME/includeにあります.コンパイルが完了したらHelloWorld.dllファイルを生成します.6.Javaプログラムを実行して、上で生成したhello.dllファイルを私たちの作業ディレクトリにコピーします.このとき、私たちのディレクトリにはHelloWorld.java、HelloWorld.class、HelloWorld.dが含まれています.llファイル.Java HelloWorldコマンドを実行すると、コンソールにHello worldが表示されます.の出力です.(HelloWorld.classとHelloWorld.dllファイルは同じパッケージディレクトリの下にある必要があります)一、Android NDKプログラミング予備のJava jni概要:http://www.eoeandroid.com/thread-264384-1-1.html三、Android NDKプログラミング予備のJava jni入門作成C/C++共有ライブラリ:http://www.eoeandroid.com/thread-264971-1-1.html