JavaからC++メソッドを呼び出したいと思いました。 JNIについて読みましたが、すべてのライブラリファイルを取得する方法と、コマンドラインからプログラムを実行するためにそれを保持する場所を取得していません。
Javaクラスを実行するために使用しているため、Eclipse自体からC++メソッドを呼び出す方法はありますか。
私は過去にJNI-C++ブリッジングを使用しましたが(少しだけですが)、少しいかもしれません。 [〜#〜] swig [〜#〜] を使用して、面倒なボイラープレートコードをすべて生成することを検討することをお勧めします。
JNIが複雑すぎる場合は、 [〜#〜] jna [〜#〜] をご覧ください。最初のケースでは、Javaとネイティブ(C++/C/...)コードを結合するためのネイティブラッパーコード(CまたはC++))を作成する必要があります。必要なのはJava code + config)のみです。
私は以前、シンプルなインターフェースにJNAを使用しましたが、それはシンプルでエレガントでした。ただし、複雑なインターフェイスがある場合は、SWIGを使用することをお勧めします。
SWIGとJNIおよびJNAを比較する良い答えがいくつかあります。しかし、質問が出されてからしばらく経ちました。
私はJNR/FFIを使用します https://github.com/jnr/jnr-ffi JNAよりも速く、SWIGよりも簡単であることがわかりました。私が見つけた速度ではJNIに近いですが、エラーが発生しにくいです。
JavaCPP- https://github.com/bytedeco/javacpp
Java内のネイティブC++への効率的なアクセスを提供します。内部ではJNIを使用しているため、Java SEのすべての実装で動作します。
JNA/JNIよりはるかに簡単
[〜#〜] jna [〜#〜]はJNIの代わりに使用できます。
必要なのは、JNA jar(https://github.com/Java-native- access/jna#download)Javaプロジェクト。
プロジェクトプロパティでC++ライブラリの場所を指定する必要があります。
Javaおよびc ++プロジェクトのソースコードも含まれている例については、このサイトにアクセスして、これがどのように機能するかを確認してください。(http:// blog。 mwrobel.eu/how-to-call-dll-methods-from-Java/#a_downloads)
How to call a C/C++ function from Java then you can use
Java Native Interface (JNI), part of the Java platform, is an interface that enables communication
between Java applications running on a Java Virtual Machine (JVM) and native applications or libraries
written in other programming languages (e.g. C, C++).
you can use some below urls for as examples.
http://malinsky.eu/blog/how-to-call-a-c-function-from-Java/
https://www3.ntu.edu.sg/home/ehchua/programming/Java/JavaNativeInterface.html