4

Java ライブラリとのインターフェイスが必要な C++ アプリケーションがあります。Java 側から通知を受け取りたいので、C++ アプリにコールバックする必要があります。C++ から Java 関数を呼び出し (これは簡単な部分です)、DLL からエクスポートされた Java から C/C++ 関数を呼び出す例を多数見つけました。

これまでに見つけたのは、Java アプリ内の外部 C++ 関数から Java コールバックを呼び出す方法だけです。私は反対が必要です。

ストレート C++ を使用すると、これはもちろん簡単です。必要に応じてコールバックとして呼び出されるクラスに関数ポインターを渡すだけです。代わりに Java 関数を呼び出しているときに、これを行うにはどうすればよいですか?

私がここで求めているものよりも完全に良い方法がある場合は、全体的なアプリケーションです:

私の C++ アプリケーションは、データをアプリにストリーミングする外部サーバーにアクセスする必要があります。アクセス API は Java ベースの API です。私の現在の計画は、すべての API 呼び出しを処理する Java ラッパーを構築することです。このラッパーは、JNI を使用して C++ アプリから呼び出されます。データが受信されると、可能な限り処理し、調整されたデータを C++ アプリに通知します。

要約すると、C++ アプリケーションから JNI を介して呼び出された Java クラスから C++ 関数コールバックを呼び出すにはどうすればよいでしょうか。Java が使用するためにロードする DLL はありません。すべてが適切に接続できれば、必要に応じて作成できますが。

関数パス: C++ アプリケーション -> Java クラス ライブラリ -> C++ コールバック関数

4

1 に答える 1

3

見つけた。「 RegisterNatives 」という環境クラスに関数があります。これにより、実行時に任意の Java クラスの C++ コールバックを登録できます。試してみましたが、期待どおりに動作します。

于 2013-02-18T18:13:39.747 に答える