- PR -

JNIについて

投稿者投稿内容
ヒロピン
常連さん
会議室デビュー日: 2003/12/14
投稿数: 35
投稿日時: 2005-12-04 20:01
JavaからCで作られたdllを呼ぶためにJNIを使おうとしています。
しかし、JNIを使ったことがないため実装方法や環境設定が分かりません。
JNIについて詳しく書かれているサイトや本を教えていただけないでしょうか。
JNIを使用する簡単な手順を教えていただけると大変助かります。
よろしくお願いします。
加納正和
ぬし
会議室デビュー日: 2004/01/28
投稿数: 332
お住まい・勤務地: 首都圏
投稿日時: 2005-12-04 20:51
>JNIを使用する簡単な手順を教えていただけると大変助かります。

http://www.hellohiro.com/native.htm

一番単純な手順だと思います。
これでも分からない場合は、何が分からないか書いたほうが
回答が得られるでしょう。
ヒロピン
常連さん
会議室デビュー日: 2003/12/14
投稿数: 35
投稿日時: 2005-12-04 21:43
回答ありがとうございます。
早速教えていただいたサイトを拝見しました。
手順を確認させてください。

@C++のソースに「JNIEXPORT void JNICALL JAVA_クラス名_メソッド名」と書いて、
 dllを作成
AJAVAでライブラリをロード
 System.loadLibrary("@で生成したdll名");
BJAVAでネイティブメソッドを宣言
 public native String @で定義したメソッド名
Cネイティブメソッドを呼ぶ

こんな感じで大丈夫でしょうか?
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2005-12-05 02:20
ヒロピンさん、こんにちは。

C++のソースを記述する前に、その Java側のクラスを
書いて、javahしてヘッダファイルを作成して下さい。

そのヘッダファイルに合わせて C++を記述して下さい。

C++を先に書いて、javahを後から行う(器用な?)人が
ときどき居ますが、正しくないです。

ヒロピンさんの番号で言うと、
3→ javah →1→2→4 が近いと思います。
ヒロピン
常連さん
会議室デビュー日: 2003/12/14
投稿数: 35
投稿日時: 2005-12-05 10:05
Kissingerさん回答ありがとうございます。
他システムからdllだけ提供されたのですが、
この場合は、C++に合わせてjavahをすれば
よろしいのでしょうか?
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2005-12-05 11:45
提供された DLLが既に JNIのものであれば、そのクラスの
Javaクラスまたはそのソースが存在するはずですから、それ
を入手する必要があるでしょう。

そうでなくて、Javaと無関係の DLLであれば、別途 JNIを
使用して呼び出す必要がありますから、ネイティブ呼び出し
のための Javaクラスを記述し、javahでヘッダを生成し、
C/C++でその DLLを呼び出すコードを記述することになるで
しょう。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2005-12-05 11:48
です。
直接1段で 合わせられない場合は、調整の処理を書きます。
java-(境界での調整)- C++ DLL
ヒロピン
常連さん
会議室デビュー日: 2003/12/14
投稿数: 35
投稿日時: 2005-12-06 15:29
回答してくださった皆様、誠に申し訳ありません。
他システムから提供されたdllは、Cで作ったdllではなく、
VBで作られたdllでした・・・。

JavaからVBで作成したdllは呼べるのでしょうか?

他言語で実装するべきでしょうか?

よろしくお願い致します。

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