JavaでJNIを使ってみる(5)
※実経験の記憶を頼りに自宅の PC 環境(VMWareなど)で再現している内容もあるのでご注意下さい
2007-11-19
前回、「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); }
関連記事
上記の記事に関連する記事(最新の10件)です。


