[JNI] JNI 사용법 및 튜토리얼 (2)
·
Etc
이전 포스팅에 이어서 JNI에 대해 설명하겠습니다. 이전에는 자바의 클래스 파일을 만들고 이를 통해 헤더 파일을 생성하여 이용하는 방법에 대해 설명했습니다. 이번에는 헤더파일을 생성하지 않고 이용하는 방법에 대해 설명하겠습니다.바로 JNI_OnLoad() 함수를 이용하는 것입니다.자바 코드 부분은 이전 포스팅과 동일하고, C++ 구현부에만 차이가 있습니다.jint JNI_OnLoad(JavaVM* vm, void* reserved) { JNIEnv* env = NULL; if (vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_6) != JNI_OK){ return JNI_ERR; } jclass c = env->FindClass("..
[JNI] JNI 사용법 및 튜토리얼 (1)
·
Etc
이번 포스팅에서는 JNI에 대한 간단한 설명과 튜토리얼을 실습해보겠습니다!  ▶ JNI 란?먼저! JNI란 무엇일까요? JNI 는 JAVA Native Interface 의 줄임말입니다.JAVA는 가상머신 위에서 실행되는 언어입니다. 그렇기 때문에, java 가상 머신을 실행할 수 있는 모든 기계나 장치에서 실행할 수 있습니다. 하지만,, 종종 특정 아키텍처에서 고유하게 컴파일 된 코드를 사용해야 하는 경우가 있습니다. JAVA 코드에서 C나 C++로 작성된 라이브러리들을 호출해야 하는 경우들이 이에 해당합니다. 이때, 이 두 언어 사이를 연결해주는 브리지가 필요하고 이를 JNI라고 합니다.  ▶ JNI의 사용이유?JNI의 구체적인 사용이유로는 아래 3가지를 꼽을 수 있습니다.1. 일부 하드웨어를 처리해..
[C++] 클래스 메모리 주소를 클래스로 변환하기
·
Etc
이번 포스팅에서는 C++클래스의 메모리 주소를 생성해두었던 클래스로 변환하는 방법에 대해 설명하겠습니다. 먼저 C++ 클래스의 주소는 this 키워드를 통해 가져올 수 있습니다. class Sample{ public: int a; int b; long get_addr(){ return (long)this; } }; 위 Sample 이라는 클래스 내의 get_addr()함수가 클래스 주소를 리턴해 주는 함수 입니다. retrun this를 통해 클래스 주소를 리턴해줄 수 있고 저는 주소값을 long형으로 받기 위해 this 앞에 long을 붙혀주었습니다. 이렇게 받아온 주소를 다시 클래스로 만들어 보겠습니다. long get_class(){ Sample *sample = new Sample(); sampl..