- - PR -
JNIについて
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-12-04 20:01
JavaからCで作られたdllを呼ぶためにJNIを使おうとしています。
しかし、JNIを使ったことがないため実装方法や環境設定が分かりません。 JNIについて詳しく書かれているサイトや本を教えていただけないでしょうか。 JNIを使用する簡単な手順を教えていただけると大変助かります。 よろしくお願いします。 |
|
投稿日時: 2005-12-04 20:51
>JNIを使用する簡単な手順を教えていただけると大変助かります。
http://www.hellohiro.com/native.htm 一番単純な手順だと思います。 これでも分からない場合は、何が分からないか書いたほうが 回答が得られるでしょう。 |
|
投稿日時: 2005-12-04 21:43
回答ありがとうございます。
早速教えていただいたサイトを拝見しました。 手順を確認させてください。 @C++のソースに「JNIEXPORT void JNICALL JAVA_クラス名_メソッド名」と書いて、 dllを作成 AJAVAでライブラリをロード System.loadLibrary("@で生成したdll名"); BJAVAでネイティブメソッドを宣言 public native String @で定義したメソッド名 Cネイティブメソッドを呼ぶ こんな感じで大丈夫でしょうか? |
|
投稿日時: 2005-12-05 02:20
ヒロピンさん、こんにちは。
C++のソースを記述する前に、その Java側のクラスを 書いて、javahしてヘッダファイルを作成して下さい。 そのヘッダファイルに合わせて C++を記述して下さい。 C++を先に書いて、javahを後から行う(器用な?)人が ときどき居ますが、正しくないです。 ヒロピンさんの番号で言うと、 3→ javah →1→2→4 が近いと思います。 |
|
投稿日時: 2005-12-05 10:05
Kissingerさん回答ありがとうございます。
他システムからdllだけ提供されたのですが、 この場合は、C++に合わせてjavahをすれば よろしいのでしょうか? |
|
投稿日時: 2005-12-05 11:45
提供された DLLが既に JNIのものであれば、そのクラスの
Javaクラスまたはそのソースが存在するはずですから、それ を入手する必要があるでしょう。 そうでなくて、Javaと無関係の DLLであれば、別途 JNIを 使用して呼び出す必要がありますから、ネイティブ呼び出し のための Javaクラスを記述し、javahでヘッダを生成し、 C/C++でその DLLを呼び出すコードを記述することになるで しょう。 |
|
投稿日時: 2005-12-05 11:48
です。
直接1段で 合わせられない場合は、調整の処理を書きます。 java-(境界での調整)- C++ DLL |
|
投稿日時: 2005-12-06 15:29
回答してくださった皆様、誠に申し訳ありません。
他システムから提供されたdllは、Cで作ったdllではなく、 VBで作られたdllでした・・・。 JavaからVBで作成したdllは呼べるのでしょうか? 他言語で実装するべきでしょうか? よろしくお願い致します。 |