3

C++ クラスのセットを作成し、これらの C++ クラスの 1 つをエクスポートする DLL を作成しました。エクスポートされた C++ クラスを Java クラスでインスタンス化する必要があります。それは可能ですか?

考えられる解決策を Web で検索しましたが、C++関数のみをインポートする JNA または JNI を使用するソリューションが見つかりました。

4

2 に答える 2

2

はい、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 );
于 2013-07-11T14:19:19.473 に答える
0

Java から C++ クラスをインスタンス化する場合は、目的のオブジェクトをインスタンス化する小さなグルー コードを (C++ で) 記述する必要があります。さらに、C++ クラスに対応する Java クラスが必要であり、グルー コードで C++ オブジェクトを前述の Java クラスのオブジェクトに変換し、それらをまとめておく必要があります (つまり、C++ オブジェクトへの変更は、 Java オブジェクトにリフレクトし、その逆)。

このチュートリアルには、それを行う方法がいくつか示されているようです。具体的には、Java オブジェクトをインスタンス化する方法を説明します。これは、上記のアプローチに必要なものです。

于 2013-07-11T12:49:06.853 に答える