TOP →
Java →
JNI → This Page
JNI サンプル(引数が文字列、戻り値が文字列)
前置き
ここでは
Javaの
JNI(Java Native Interface)の
サンプルを紹介します。
サンプル概要
Java から 引数が文字列、戻り値が文字列の C の関数を呼び出すサンプルです。
引数に2つの文字を渡すとそれらの文字を連結して返します。
SampleJava4.java
呼び出す側(Java)として以下のファイルを作成します。
public class SampleJava4 {
// ライブラリをロード
static {System.loadLibrary("SampleC4");}
// ネイティブメソッドを宣言
public native String concat(String str1, String str2);
public static void main(String[] args) {
SampleJava4 main = new SampleJava4();
// ネイティブメソッドを実行
System.out.println(main.concat("山田", "太郎"));
}
}
|
コマンドプロンプトを開き、以下のコマンドでコンパイルします。
(パスは SampleJava4.java を作成したフォルダにして下さい)
SampleJava4.h
コマンドプロンプトを開き、以下のコマンドでヘッダファイルを出力します。
(パスは SampleJava4.java を作成したフォルダにして下さい)
すると以下の内容のファイルが作成されます。
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class SampleJava4 */
#ifndef _Included_SampleJava4
#define _Included_SampleJava4
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: SampleJava4
* Method: concat
* Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_SampleJava4_concat
(JNIEnv *, jobject, jstring, jstring);
#ifdef __cplusplus
}
#endif
#endif
|
SampleC4.cpp
呼び出される側(C)として以下のファイルを作成します。
先ほど Java を作成したフォルダと同じフォルダに作成して下さい。
#include <string.h>
#include "SampleJava4.h"
JNIEXPORT jstring JNICALL Java_SampleJava4_concat
(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);
}
|
コマンドプロンプトを開き、以下のコマンドでコンパイルします。
(パスは SampleJava4.java を作成したフォルダにして下さい)
bcc32 -IC:\j2sdk1.4.2_08\include -IC:\j2sdk1.4.2_08\include\win32 -tWD SampleC4.cpp
(注意)
上記の C:\j2sdk1.4.2_08 部分は各自のマシンの JDK のパスにあわせて下さい。
|
警告は出るかもしれませんが、エラーが出なくて DLL が作成されればコンパイル成功です。
コンパイルのパスについての注意点
JDK のパスに半角スペースなどが含まれている場合は、パスをダブルクォートで囲む必要があります。
bcc32 -I"C:\Program Files\Java\j2sdk1.4.2_08\include" -I"C:\Program Files\Java\j2sdk1.4.2_08\include\win32" -tWD SampleC4.cpp
|
サンプルの実行
コマンドプロンプトを開き、以下のコマンドで実行します。
(パスは SampleJava4.java を作成したフォルダにして下さい)
山田太郎 と表示されれば成功です。
サンプルのダウンロード
サンプルのダウンロード
更新履歴
2008/04/01 コンパイル時のパスについて注意点追加
2007/12/01 Javaのコーナー細分化に伴い、URL の変更
TOP →
Java →
JNI → This Page