반응형
HelloJNI.java 작성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public class HelloJNI { static { System.loadLibrary( "HelloJNI" ); } private native void helloJNI(); private native void printString(String string); public static void main(String[] args) { HelloJNI jni = new HelloJNI(); jni.helloJNI(); jni.printString( "here is jni!!" ); } } |
아래 명령어 실행
1 2 | javac HelloJNI.java javah -classpath . HelloJNI |
HelloJNI.c 작성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <jni.h> #include <stdio.h> #include "HelloJNI.h" JNIEXPORT void JNICALL Java_HelloJNI_helloJNI(JNIEnv *env, jobject obj) { printf ( "Hello JNI!\n" ); return ; } JNIEXPORT void JNICALL Java_HelloJNI_printString(JNIEnv *env, jobject obj, jstring string) { const char *str = (*env)->GetStringUTFChars(env,string,0); printf ( "str = %s\n" , str); return ; } |
아래 명령어 실행
1 2 | gcc -shared -fPIC -I $JAVA_HOME /include -I $JAVA_HOME /include/linux HelloJNI.c -o libHelloJNI.so java -classpath . -Djava.library.path=. HelloJNI |
결과
1 2 | Hello JNI! str = here is jni!! |
반응형