JavaでJNIを使ってみる(2)

JavaでJNIを使ってみる(2)

JavaJavaでJNIを使ってみる(2)

前回、「JavaでJNIを使ってみる(1)」で JNI の概要をまとめたので、今回は実際にライブラリの作成をしてみます。最初は、Cygwin 上で gcc を使って dll を作成します。

早速の注意事項として、${JAVA_HOME}\include\win32\jni_md.h の型マッピングの定義が一致しないので対応しないといけません。対応方法は、gcc 実行時に引数として -D__int64='long long' を定義する方法と、jni_md.h の jlong の定義を直接書き換える方法があります。

(例)-D__int64='long long' を定義する方法
gcc -D__int64='long long'

(例)jni_md.h の jlong の定義を書き換える方法
#ifdef __GNUC__
typedef long long jlong;
#else
typedef __int64 jlong;
#endif

まずはコンパイルで sample.o ファイルを生成します。gcc の -m はコンフィグ依存のオプションで、 no-cygwin によって Cygwin DLL とリンクしないように指定しています。

gcc -c -mno-cygwin -shared -D__int64='long long' \
-I"C:/Program Files/Java/jdk1.5.0_13/include" \
-I"C:/Program Files/Java/jdk1.5.0_13/include/win32" \
sample.cpp

sample.o ができたら、さらにコンパイルして dll を生成します。

dllwrap -mno-cygwin --add-stdcall-alias -mwindows --target=i386-mingw32 \
-o sample.dll -s sample.o

これで、dll の作成ができたので早速 Java プログラムを実行してみます。コマンドラインからの実行方法は、java [クラス名] です。次回は、Linux と Mac で使用するライブラリの作成方法についてまとめます。

最終更新日:

関連記事

人気記事

新着情報