C++ クラスのセットを作成し、これらの C++ クラスの 1 つをエクスポートする DLL を作成しました。エクスポートされた C++ クラスを Java クラスでインスタンス化する必要があります。それは可能ですか?
考えられる解決策を Web で検索しましたが、C++関数のみをインポートする JNA または JNI を使用するソリューションが見つかりました。
はい、Java から C++ クラスをインスタンス化できます。
1 つの方法は、C++ クラスの Java ラッパーを生成できるSWIGを使用することです。
たとえば、次のような C++ クラスがあるとします。
class MyClass {
public:
MyClass();
int myMethod( int arg );
}
SWIG では、次のような Java コードを記述できます。
MyClass myclass = new MyClass();
int val = myClass.myMethod( 42 );
Java から C++ クラスをインスタンス化する場合は、目的のオブジェクトをインスタンス化する小さなグルー コードを (C++ で) 記述する必要があります。さらに、C++ クラスに対応する Java クラスが必要であり、グルー コードで C++ オブジェクトを前述の Java クラスのオブジェクトに変換し、それらをまとめておく必要があります (つまり、C++ オブジェクトへの変更は、 Java オブジェクトにリフレクトし、その逆)。
このチュートリアルには、それを行う方法がいくつか示されているようです。具体的には、Java オブジェクトをインスタンス化する方法を説明します。これは、上記のアプローチに必要なものです。