• ベストアンサー

JNI C言語からjava

お世話になります。 JNIでC言語からJAVAを呼び出したいのですがやり方が分からないので教えて下さい。 【呼び出されるJAVA側のソース】 public class JniTest { public String GetXX(String P1, String P2) { String R = P1 + P2; return R; } } 上記をC言語から呼び出して結果を表示したいのですが、どのようにコーディングしたら良いのか分かりません。 色々探してみたのですがギブアップです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.2

>Webで色々探して幾つかのページは見つけたのですが、戻り値がvoidだったり、引数がintだったり、staticなメソッドだったりで、質問した内容でのやり方が見つけられなかったのです。 戻り値がString, Stringの引数が2つのインスタンスメソッドのJNIを使った呼び出し方などのような ピンポイントなサンプルがそうそうあるわけないじゃないですか・・・ インスタンスの生成方法 インスタンスメソッドの呼び出し 戻り値がStringのメソッド呼び出し 引数がStringのメソッド呼び出し いくつかに分解すれば、それらのサンプルが書かれてるblogなどはあるんですから それらを組み合わせるんです。 コピペしてちょっといじれば扱えるような回答期待されてるのかもしれませんけど。 基本的な作法を知りたいのなら、これは読んでおいた方がいいのかもしれない。 http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/jni/spec/jniTOC.html

miruha2011
質問者

お礼

ありがとうございます。 参考になりました。 コマンドラインから起動するモジュールで取り敢えず期待する動作はできるようになりました。

その他の回答 (1)

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

まずはクラスメソッドの呼び出しから挑戦してはどうでしょうか。 インスタンスメソッドだとインスタンスの生成からする必要があるので クラスメソッドの呼び出しよりやらないといけないことが多いです。 サンプルを載せようかとも思ったのですが手持ちのが どこかの個人blogのものそのままだったので、 検索して探してみてください。

miruha2011
質問者

お礼

Webで色々探して幾つかのページは見つけたのですが、戻り値がvoidだったり、引数がintだったり、staticなメソッドだったりで、質問した内容でのやり方が見つけられなかったのです。 Stringの引数やstaticでないStringメソッドの呼び出し方、値の受け渡し等、基本的な事が分かっていません。 基本的なお作法が分かっていないので、引数に渡す領域の確保方法や受け取った後の解放など、一通りのお作法を教えて欲しくて質問しました。