[JNI] jbyte를 C++의 vector<uchar>로 변환하는 방법
·
Etc
이번 포스팅에서는 매개변수로 받은 jbyte형 변수를 C++의 vector 자료형으로 변환하는 방법에 대해 설명하겠습니다! JNI 함수 쪽에서 아래와 같은 과정을 통해 변환해주면 됩니다.void byte2char( JNIEnv *env, jclass obj, jbyteArray tmp){ int tmp_len = env->GetArrayLength(tmp); unsigned char* tmpBuffer = new unsigned char[tmp_len]; env->GetByteArrayRegion(tmp, 0, tmp_len, reinterpret_cast(tmpBuffer)); vector newtmp(*tmpBuffer, tmp_len);}1. 먼저, ..
[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. 일부 하드웨어를 처리해..