memo



Java ネイティブコール (JNI)

[2006.06.01 : PRI]
<HP-UXの場合>


■呼ぶ側 (Native.java)

public class Native {

public native static void func1(String s1);

static public void main(String args[]){

String s = System.getProperty(”java.library.path”);
System.out.println(”java.library.path=” + s);

System.loadLibrary(”native”);
System.out.println(”loadLibrary() : libnative.so loaded.”);

func1(”ABCDE”);
}

}


■呼ばれ側(native.c)

#include ”Native.h”

main(){}

JNIEXPORT void JNICALL Java_Native_func1(
JNIEnv *env,
jobject obj,
jstring s1
){

printf(”func1 called!!\n”);
return;
}

■コンパイル
java Native.java

■JNIヘッダ作成
javah Native


■コンパイルとリンク
#/bin/sh

#cc -I /opt/java1.4/include -I /opt/java1.4/include/hp-ux native.c
#cc -I /opt/java1.4/include -I /opt/java1.4/include/hp-ux -o native.o
#ar r native.a native.o

cc +z -c -I /opt/java1.4/include -I /opt/java1.4/include/hp-ux native.c
ld -b -o libnative.so native.o

■実行
#/sbin/sh

setenv LD_LIBRARY_PATH .
java Native
■ Links