JavaでJNIを使ってみる(5)

JavaでJNIを使ってみる(5)

JavaJavaでJNIを使ってみる(5)

前回、「JavaでJNIを使ってみる(4)」で実際に作った Java のサンプルプログラムとヘッダファイルを紹介しました。今回は、C++ で作成したプログラムです。
(コメントは省いてます)

何か文字列を出力する簡単なサンプルを作ると、ついつい「Hello World」って書いちゃうのはなんででしょうか(笑)

#include 
#include 
#include 
#include "JniSample.h"

JNIEXPORT jstring JNICALL Java_JniSample_getWord (JNIEnv *env, jobject obj ) {
    return env->NewStringUTF("Hello World");
}

JNIEXPORT jstring JNICALL Java_JniSample_getWordParam (JNIEnv *env, jobject obj, jstring str1, jstring str2 ) {

    char buf[256];

    const char *c1 = env->GetStringUTFChars(str1, 0);
    const char *c2 = env->GetStringUTFChars(str2, 0);

    strcpy(buf, c1);
    strcat(buf, c2);

    env->ReleaseStringUTFChars(str1, c1);
    env->ReleaseStringUTFChars(str2, c2);

    return env->NewStringUTF(buf);
}

JNIEXPORT jstring JNICALL Java_JniSample_getNumber (JNIEnv *env, jobject obj, jint num ) {
    char buf[256];

    for (int i = 0; i < 10; i++) {
        num = num + i;
    }

    sprintf(buf, "%d", num);
    return env->NewStringUTF(buf);
}

JNIEXPORT void JNICALL Java_JniSample_getByteWord (JNIEnv *env, jobject obj, jbyteArray arrByte) {
    jboolean b;

    jbyte* arrData = env->GetByteArrayElements(arrByte, &b);
    arrData[0] = 5;

    env->ReleaseByteArrayElements(arrByte, arrData, 0);
}

最終更新日:

関連記事

人気記事

新着情報