본문 바로가기

개발 언어/JAVA

[jni] 숫자 인자와 변환값

-자바와 다른 언어간의 기본형 데이터 타입의 차이를 해결 하기 위해서,JNI는 아래 표와 같이 Native Method가 자바의 기본형 데이터에 접근할 수 있도록 미리 정의된 데이터 타입들을 제공

Java Type

Native Type

Size in bits

Boolean

jboolean

8, unsigned

Byte

jbyte

8

Char

jchar

16, unsigned

Short

jshort

16

Int

jint

32

Long

jlong

64

Float

jfloat

32

double

jdouble

64

void

void

n/a

20-1 Native Method를 위해 제공되는 JNI에서 정의된 데이터 타입

 

 

Calculator.java(간단한 숫자계산을 위한 Native Method 선언)

public class Calculator {

   static {

       System.loadLibrary("calculator");

   }

   public native int add(int a, int b);

   public static void main(String[] args) throws Exception {

       Calculator c = new Calculator();

       int result = c.add(10,5);

       System.out.println(result);

   }

}

C:\JavaExample\20> javac Calculator.java

C:\JavaExample\20> javah Calculator

 

C:\JavaExample\20> dir

Calculator.class

Calculator.h

 

Calculator.c(간단한 계산의 실제 Native Method의 구현)

#include <jni.h>

#include "Calculator.h"

#include <stdio.h>

 

JNIEXPORT jint JNICALL Java_Calculator_add (JNIEnv *env, jobject obj, jint a, jint b){

   jint sum;

   printf("a + b = ");

   sum = a + b;

   return sum;

}

C:\JavaExample\20>cl -Ic:\jdk1.3.1\include -Ic:\jdk1.3.1\include\win32 -LD Calculator.c

 -Fecalculator.dll

 

C:\JavaExample\20>java Calculator

a + b = 15

http://blog.naver.com/kittenjun/10003051683

'개발 언어 > JAVA' 카테고리의 다른 글

[JNI] 배열혈 아규먼트  (0) 2011.07.22
[jni]객체의 메서드 실행하기  (0) 2011.07.22
[jni]객체 필드에 접근하기  (0) 2011.07.22
[jni]문자열 전달 인자  (2) 2011.07.22
[JNI] 단계별 설명 (기본)  (0) 2011.07.22