2011-09-29 18 views
15

私はJavaからC++メソッドを呼びたいと思っていました。私はJNIについて読んでいますが、コマンドラインからプログラムを実行するためには、すべてのライブラリファイルを取得する方法と、どこに置いておくべきかについてはわかりません。JavaからC++を呼び出す方法は?

私はJavaクラスを実行するためにEclipseを使用しているため、Eclipse自体からC++メソッドを呼び出す方法はありますか。

+0

は、このスレッドを見てみましょう - http://stackoverflow.com/questions/7212982/jni-unable-to-fix-this-error/7213943#7213943 – adatapost

+0

ただのJNIのチュートリアルに従うとget開始 –

+0

[NDKの使い方は? 'hello world' appから始める(http://stackoverflow.com/questions/4777935/how-to-use-ndk-starting-with-hello-world-app) –

答えて

5

JNIが複雑すぎる場合はJNAをご覧ください。最初のケースでは、Javaおよびネイティブ(C++/C/...)コードに結合するネイティブラッパーコード(CまたはC++で)を作成する必要があります。後者の場合、実行時に実行されます(Javaコード+ configのみが必要です)。

+0

"JNI"は標準的な答えです。しかし、JNAがあなたのニーズを満たすならば、クール! @フェルナンド・ミグレレス:素晴らしい提案!共有していただきありがとうございます!別のリンクがあります:http://www.javaworld.com/javaworld/jw-02-2008/jw-02-opensourcejava-jna.html – paulsm4

6

私は過去にJNI-C++ブリッジを使用していましたが(ちょっとしたことですが)、少し醜いことがあります。 SWIGを使用して、すべての乱雑なボイラープレートコードを生成することを検討することをお勧めします。

2

私は単純なインターフェイスのためにJNAを使いました。シンプルでエレガントでした。ただし、複雑なインターフェイスがある場合は、SWIGを使用する方がよいことに注意してください。

SWIGとJNI、JNAを比較すると良い答えがいくつかあります。それは質問が頼まれてからしばらくです。

SWIG vs JNI and JNA

1

JNA代わりにJNIを使​​用することができます。

必要なのは、あなたのJavaプロジェクトに含まれるべきであるJNAジャーを(https://github.com/java-native-access/jna#download)をダウンロードすることです。

プロジェクトプロパティでC++ライブラリの場所を指定する必要があります。 VMオプション

  • 右クリックプロジェクト
  • 実行
  • この-Djava.library.path = "C:あなたのdll 場所" が含まを。

このサイトにアクセスして、この動作の仕組みを知るJavaおよびC++プロジェクトのソースコードも提供しています。 (http://blog.mwrobel.eu/how-to-call-dll-methods-from-java/#a_downloads

関連する問題