Hello JNI (5), 원시 자료형 주고 받기

From Evernote:

Hello JNI, 원시 자료형 주고 받기

자바의 원시 자료형을 매개변수로 주고 받을 때에는, 문자열을 가져오고 생성하는 것과는 달리, JNI 의 변환 함수를 거칠 필요가 없다. 자료형의 크기 등에만 주의하면 된다.

package kr.pe.elex.example.jni;

/**
 * JNI 테스트
 *
 * @version 5
 * @author Elex
 */
public class HelloJni {

       static {
            System. loadLibrary("libhellojni");
      }

       private native int sum(int a, int b);

       public static void main(String[] args) {
             int a = 2, b = 3;
            
            HelloJni test = new HelloJni();
            
            System. out.println(a + " + " + b + " = " + test.sum(a, b));
            
      }

}


/*
 * hellojni.c
 * JNI 테스트를 위한 C 라이브러리
 *      Author: Elex
 */

#include "kr_pe_elex_example_jni_HelloJni.h"

JNIEXPORT jint JNICALL
_Java_kr_pe_elex_example_jni_HelloJni_sum (JNIEnv *env, jobject obj,
    jint a, jint b)
{
  return a + b;
}

#. 시스템 환경마다 또 컴파일러마다 조금씩 다르겠지만, jni_md.h 파일에는 jint가 long형으로 선언되어 있다. 즉, 4바이트.


<프로젝트 파일>
http://www.elex.pe.kr/attachment/cfile30.uf@2114F74F523204F907D5B8.7z

댓글

이 블로그의 인기 게시물

자바 암호화 확장 (JCE) 관련 자바 1.8.0_151 이후 변경 사항

좌표 변환: 회전 이동

Apache Commons CSV