class HelloJNI
{
//네이티브 메서드 선언
native void printHello();
native void printString(String str);
// library loading
static { System.loadLibrary("hellojni"); }
public static void main(String args[])
{
HelloJNI myJNI = new HelloJNI();
myJNI.printHello();
myJNI.printString("Hello World from printString fun");
}
}
// 빌드는 아래와 같이 진행
>javac HelloJNI.java
// HelloJNI.class 파일이 생성된다.
// HelloJNI.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include
/* Header for class HelloJNI */
#ifndef _Included_HelloJNI
#define _Included_HelloJNI
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloJNI
* Method: printHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloJNI_printHello
(JNIEnv *, jobject);
/*
* Class: HelloJNI
* Method: printString
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_HelloJNI_printString
(JNIEnv *, jobject, jstring);
#ifdef __cplusplus
}
#endif
#endif
// hellojni.c
#include "HelloJNI.h"
#include
JNIEXPORT void JNICALL Java_HelloJNI_printHello (JNIEnv *env, jobject obj)
{
printf("Hello World!\n");
return;
}
JNIEXPORT void JNICALL Java_HelloJNI_printString (JNIEnv *env, jobject obj, jstring string)
{
const char *str = (*env)->GetStringUTFChars(env, string, 0);
printf("%s!\n", str);
return;
}
// 빌드는 아래와 같이 진행
>cl -I"D:\MyDevelopment\Android\Java\jdk1.7.0\include" -I"D:\MyDevelopment\Android\Java\jdk1.7.0\include\win32" -LD hellojni.c -Fehellojni.dll
// Fehellojni.dll 파일이 생성된다.
// 빌드가 완료되었으니 이제 실행해보자!
>java HelloJNI
Hello World!
Hello World from printString fun!
// 위 처럼 출력결과가 나타난다.(실행된 코드 그대로 올렸으니 소스상 문제는 없을것이다.)
댓글 없음:
댓글 쓰기