본문 바로가기
728x90
반응형

Programming/etc3

[JNI] jbyte를 C++의 vector<uchar>로 변환하는 방법 이번 포스팅에서는 매개변수로 받은 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. 먼저, byte형 변수의 길이가 필요합니다. env.. 2023. 3. 12.
[JNI] JNI 사용법 및 튜토리얼 (2) 이전 포스팅에 이어서 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("com/test/testjni.. 2023. 3. 12.
[JNI] JNI 사용법 및 튜토리얼 (1) 이번 포스팅에서는 JNI에 대한 간단한 설명과 튜토리얼을 실습해보겠습니다! ▶ JNI 란? 먼저! JNI란 무엇일까요? JNI 는 JAVA Native Interface 의 줄임말입니다. JAVA는 가상머신 위에서 실행되는 언어입니다. 그렇기 때문에, java 가상 머신을 실행할 수 있는 모든 기계나 장치에서 실행할 수 있습니다. 하지만,, 종종 특정 아키텍처에서 고유하게 컴파일 된 코드를 사용해야 하는 경우가 있습니다. JAVA 코드에서 C나 C++로 작성된 라이브러리들을 호출해야 하는 경우들이 이에 해당합니다. 이때, 이 두 언어 사이를 연결해주는 브리지가 필요하고 이를 JNI라고 합니다. ▶ JNI의 사용이유? JNI의 구체적인 사용이유로는 아래 3가지를 꼽을 수 있습니다. 1. 일부 하드웨어를 처.. 2023. 3. 11.
728x90
반응형