いまさらJNI - お約束のHello World
というわけで、JNIの作り方。
まずはJava側のインターフェイスでこんなのを用意する。
public class HelloNative { static { System.loadLibrary("HelloNative"); } public static native hello(); }
で、javac でコンパイル。その後C/C++用ヘッダーファイルを作る。
javah HelloNative
HelloNative.hが作られるので、今度はソースファイルを書く。
#include <stdio.h> #include "HelloNative.h" // ↓この部分はヘッダーファイルのプロトタイプをコピペ JNIEXPORT void JNICALL Java_HelloNative_hello(JNIEnv *env, jclass cl) { printf("はろー from Native C!!!\n"); }
ちなみに、C++の場合は extern "C" を付ける。
それで、コンパイル。
\bin\vcvars32.bat ←環境変数設定 cl -I \incluse -I \include\win32 -LD HelloNative.c -FeHelloNative.dll
これでDLLができればめでたく終了。Cのprintf()が呼べます。
public class Test { public static void main(String[] args) { HelloNative.hello(); } }