4

非常に大きな C++ アプリケーションに大きな Java ライブラリを統合する必要があります。解決策は JNI を使用することですが、これにはすべてのクラスのコードを渡す必要があります。たとえば、Python には、プロセスを自動化する JPype ( http://jpype.sourceforge.net/ ) を使用した素晴らしいソリューションがあります (ただし、C++ と Python の性質が異なるため、同じソリューションを C++ に適用することはできません)。

ありがとう、

ダス

4

5 に答える 5

4

SWIGは、ある言語から別の言語へのバインディングを自動生成できるツールです。C++ や Java など、12 種類の言語をサポートしています。

于 2008-10-07T21:34:16.030 に答える
1

私の質問は十分に明確ではなかったようです。多分混乱はブースの方向へのアクセスを許可するJNIから来ています...

私がやりたいのは、C++からJavaライブラリにアクセスすることです。つまり、誰かが私にJAVAコンパイル済みクラスのコレクションを含むJARファイルをくれたので、それにアクセスするにはC ++でコードを記述する必要があります(そのJavaライブラリの機能をC ++アプリケーションに統合したいため)。

これがアクセスの方向を明確にすることを願っています:)

ありがとう、

ダス

于 2008-10-08T18:52:44.280 に答える
0

この商用ツールが生活を楽にするかどうかはわかりませんが、探索したいかもしれません -- http://www.teamdev.com/jniwrapper/index.jsf

于 2008-10-07T22:05:37.027 に答える
0

うまくいくかもしれないし、うまくいかないかもしれない2つの提案があります:

まず、非常に簡単なことを試すことができます。別のプロセスで Java コードを実行し、パイプまたはソケットを使用して通信します。これはかなり簡単に実行でき、クレイジーなライブラリは必要ありません。欠点は、通信が多少制限されていることです (いくつかの単純なパイプのみ)。データを送信するには、独自のラッパーを作成する必要があります。

第二に、このライブラリとは正確には何ですか? おそらく、Java で書かれていない、C++ アプリケーションで使用するのがはるかに簡単な代替案を提案できますか?

于 2008-10-08T18:59:01.210 に答える
0

JNAはあなたが探しているものではありませんが、あなたの生活をずっと楽にしてくれます。ボイラープレート/生成されたコードは必要ありません。呼び出すメソッドのインターフェイスを記述するだけです。

確かに、JNI の代わりに JNA を使用するあらゆる理由があります。

于 2008-10-08T09:19:19.913 に答える