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++ コールバック関数