1

C++/Qt/Java アプリケーションが混在する作業を行っています。JNI を使用して JVM を起動する前に、C++ 側から QtSplashScreen を開いています。私の問題は、QtSplashScreen を閉じるときに発生します。アプリケーションの実行準備が整ったときに Java 側から呼び出される C++ 側のコールバックが必要です。ただし、JNI または JNA を使用して Java から C++ を呼び出す場合、C++ コードを共有ライブラリとしてコンパイルする必要があるようです。これにより、QtSplashScreen の内部依存関係がすべて壊れます。何か案は?

ありがとう。

4

2 に答える 2

6

まったくばかげた方法ですが、スプラッシュスクリーンと Java プログラムを、共通の親プロセスによって生成された個別のプロセスとして実装します。次に、UDP(最も単純な)またはメールボックス/パイプを介して相互に通信させます。

IMHO、異なるプログラミング言語で記述されたプログラム間の通信が必要な場合は、プロセス自体を分離し、TCP/UDP/メールボックス/IPC (または同様の概念) を介して相互に通信させる必要があります。

于 2012-11-28T16:49:14.800 に答える
0

私は元のポスターです。最終的な解決策は、JNI を使用してブール値を返す Java メソッドを呼び出すことでした。このメソッドは、wait() を使用して、Java 側の準備が整うまで待機します。その場合、アプリは同じオブジェクトで notifyAll() を呼び出し、メソッドが戻ります。これにより、次のように SplashScreen が閉じられます。

waitForJava(); SplashScreen.close();

于 2012-12-27T11:31:10.513 に答える