「Java」Windows 環境で JNI
Windows 環境で JNI を試してみたので、その時のメモ。
手順は以下でやりました。
1. Java ソースの作成
2. ヘッダファイルの生成
3. C 側のソースを作成
4. DLL ファイルの生成
1. Java ソースの作成
class Hello { public native void hello(); public static void main(String[] args) { System.loadLibrary("Hello"); Hello inst = new Hello(); inst.hello(); } }
ソースファイルは javac でコンパイルしておく。
2. ヘッダファイルの生成
javah Hello
3. C 側のソースを作成
#include "Hello.h" JNIEXPORT void JNICALL Java_Hello_hello(JNIEnv *env, jobject obj) { printf("Hello !!\n"); }
「Hello !!」と表示するだけの簡単なプログラム。
4. DLL ファイルを生成
cl /I "C:\Program Files (x86)\Java\jdk1.6.0_30\include" /I "C:\Program Files (x86)\Java\jdk1.6.0_30\include\win32" /LD Hello.c
cl.exe コンパイラを使用してます。
jni.h と jni_md.h が必要みたいなので、/I ( 追加インクルードディレクトリ ) で、
"C:\Program Files (x86)\Java\jdk1.6.0_30\include" と "C:\Program Files (x86)\
Java\jdk1.6.0_30\include\win32" を指定している。
コンパイルが正常したら、"Hello.dll" てなファイルが生成されているはず。
上記で準備は完了。後は、以下のコマンドで実行すると「Hello !!」と表示されるはず。
java -Djava.libraryu.path=[ Hello.dll が存在するディレクトリ ] Hello
■ 環境
Windows 7 SP1
Java SE 6 Update 30 ( 32bit )
cl.exe ( 32bit )
※ 試してないですが、Java と cl コンパイラのアーキテクチャが違えば、うまく動かないはずです。たぶん。。。
以上です。