0

私の質問は、実行中の C++ コードから実行中の Java コードを呼び出す方法と、その逆の方法です。Java Native Interface (JNI) または Java Native Access (JNA) を使用しない C から Java または JVM からコンパイル済みの C++ ファイルを呼び出すことに関する投稿がいくつかあります。ただし、例ではコンパイルされたライブラリのみが呼び出されるため、これは実行中のコードを呼び出す適切な方法ではないようです。

私の場合は次のようになります。ローカル コンピューターで実行されている 2 つのアプリケーションがあります。1 つのアプリケーションは、Eclipse および Java ベースです。もう 1 つのアプリケーションは C++ ベースです。双方向で通信できるようにする必要があります。多分これはRPCの場合ですか?しかし、私はウェブ経由で通信する必要はありません。

RCP は一つの方法かもしれないと思いますが、Web 経由で通信したくなく、このコンテキストで RCP を使用する方法がわからないため、大きすぎるように思えます。よりスマートなソリューションを探しています。

私を助けることができる経験はありますか?

感謝と敬意

ロブ

4

2 に答える 2

1

C++ から Java RPC への私のソリューションをご覧になることをお勧めします。Java クラスを指定すると、C++ クライアント スタブと Java サーバー スタブが生成されます。

https://github.com/danfickle/cppToJavaRpcStubGenerator

編集: CORBA は「標準」ソリューションだと思います。しかし、私の本棚にある (そしてまだ読んでいない) 1000 ページの本 Java と CORBA は、学習曲線があることを示唆しています。MessagePack、Thrift、ActiveMQ なども調べてみてください。申し訳ありませんが、これ以上お役に立てません。

于 2012-06-16T08:33:10.010 に答える
0

JNI を使用すると、C++ と Java コードをリンクできます。ただし、両方とも同じプログラムです。

あるプログラムから別のプログラムを呼び出す場合、最も簡単な方法は、ネットワーク対応テクノロジを使用することです。RPC、CORBA、クライアント/サーバー ソケット、またはネットワークを含むその他の手段が適しています。

共有メモリ、セマフォ、パイプなど、よりハードな非ネットワーク スタック ソリューションが存在します。ただし、それらをサポートするオペレーティング システムが必要であり、使用方法に制約があります。さらに、それらを使用する両方の言語の言語バインディングを見つける必要があります。

于 2012-06-15T15:56:34.497 に答える