float 데이터형 값 주고 받기

반지름을 전달하면 원의 넓이를 반환하는 예제를 만들어 보자.

$ vi PassAndReturnFloat.cpp
#include <jni.h>

jfloat circleArea
(
    JNIEnv      *env,
    jobject     thiz,
    jfloat      radius
)
{
    return 3.141592 * radius * radius;
}

JNIEXPORT jint JNICALL JNI_OnLoad
(
    JavaVM      *vm,
    void        *reserved
)
{
    JNIEnv  *env;
    if(vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6)) {
        return -1;
    }

    JNINativeMethod nm {
        const_cast<char *>("circleArea"),
        const_cast<char *>("(F)F"),
        reinterpret_cast<void *>(circleArea)
    };

    jclass cls = env->FindClass("Client");
    env->RegisterNatives(cls, &nm, 1);
    return JNI_VERSION_1_6;
}

컴파일하고 라이브러리로 만든다

자바 코드에서 라이브러리를 사용해 보자.

자바 코드를 컴파일하고 실행해 본다.

Last updated

Was this helpful?