- PR -

【質問】JNIについて(初心者です・・・)

投稿者投稿内容
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-10-20 14:44
引用:

るしぃ。さんの書き込み (2004-10-20 14:22) より:
Cで次のように書いて実行しました。

#include <jni.h>

int main(void){

JNIEnv *env;
jclass ioeClass = (*env)->FindClass(env,"java/io/IOException");
}
これをコンパイルし、実行しましたら、
「無効な命令」と出力されてしまいました。。。
どこかおかしいところあるのでしょうけど、わかりません・・・。
わかります方おられましたら、宜しくお願い致します。


envが初期化されていないのでエラーが出て当然です。JNI以前にC/C++の基本的なところが
わかっていないのでは?
JW
常連さん
会議室デビュー日: 2004/01/14
投稿数: 49
投稿日時: 2004-10-20 14:54
引用:

るしぃ。さんの書き込み (2004-10-20 14:22) より:
Cで次のように書いて実行しました。
コード:
#include <jni.h>

int main(void){

    JNIEnv *env;
    jclass ioeClass = (*env)->FindClass(env,"java/io/IOException");
}


これをコンパイルし、実行しましたら、
「無効な命令」と出力されてしまいました。。。


env初期化してないですし。そりゃそうなるでしょう…。

Kissingerさんも書いているようにsdkのドキュメントをまず読んでください。
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/jni/spec/jniTOC.doc.html
から、特に5章の「呼出API」を。
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/jni/spec/invocation.doc.html
普通のアプリケーションからJavaVMを起動して、その機能を利用する方法が書かれています。
後は、JDKをインストールした際にソースコードも含めてインストールし、src.zipの中のlauncher/java.c ,java_md.c を頭から追っていけば動きが理解できるんじゃないでしょうか。
SugiTK
会議室デビュー日: 2004/01/16
投稿数: 5
投稿日時: 2004-10-24 22:27
http://yasudakei.org/sugimura/technotes/
に JNI について少々書いてます。

参考になれば。

スキルアップ/キャリアアップ(JOB@IT)