1

グラフィック部分にopneglを使用し、カーネルがc++で開発されている CAD ソフトウェアを開発しています。ウィンドウインターフェイスにはQTを使用するようにアドバイスされましたが、私のソフトウェアは商用目的であるため、QT を使用せずにJavaを使用します。私の問題は、C++ プログラムで jar exe を使用できるかどうかです (カーネルが C++ にあり、カーネルがプログラムを制御しているため)。はいの場合、誰かが簡単な例またはサイトを提供できます。いいえの場合、他のオプションは何ですか?

ユーザーがクリックできるいくつかの小さなアイコンを提供することにより、主にユーザーが実行したい操作 (点、線、円などを作成) を選択できるようにするために、Windows インターフェイスが必要です。また、警告エラー入力引数の取得などを表示するポップアップウィンドウの Windows インターフェイスも必要です。

4

4 に答える 4

2

dll を変更せずに使用すれば、商用プロジェクトでも Qt を使用できます。

ただし、JNI (Java ネイティブ インターフェイス) を使用して、java と c++ をインターフェイスさせることもできます。または、 swigのようなものを使用できます。Swig は、C++ クラスから Java クラスを生成します。これにより、2 つの言語のインターフェイス作業が大幅に簡素化されます。

アプリケーションをJavaで起動する必要があるのは、おそらく必要であり、あなたが望んでいたものとは異なります. 次に、Java は dll を介して c++ カーネルをロードし、関数を呼び出します。

于 2011-11-05T07:07:30.107 に答える
1

Java 仮想マシンを C++ プログラムに直接埋め込むことができます。JVM は、ネイティブ プログラムと同じプロセス空間で VM をインスタンス化できる API を提供します。

ただし、JVM をネイティブ アプリケーションに埋め込むのではなく、その逆を行う方がよいと思います。つまり、JVM にネイティブ コードを呼び出させるのです。

どちらも Java Native Interface (JNI) を使用する必要がありますが、最初のケースでは、VM に公開されているネイティブ機能に関していくつかの追加手順を実行する必要があります。これらの追加要件は、大規模なネイティブ アプリケーションでは満たすことが難しい場合があります。

Java Native Interface Manual の 8.3 章を参照してください。

8.3 ネイティブメソッドの登録

[...] RegisterNativesは、ネイティブ アプリケーションが仮想マシンの実装を埋め込み、ネイティブ アプリケーションで定義されたネイティブ メソッドの実装とリンクする必要がある場合に特に役立ちます。仮想マシンは、アプリケーション自体ではなくネイティブ ライブラリのみを検索するため、このネイティブ メソッドの実装を自動的に見つけることはできません。

別の言い方をすれば、dll_exported 以外のネイティブ メソッドはすべて手動で VM に登録する必要があります。これは非常に重い要件です。

于 2011-11-05T14:24:37.880 に答える
0

C++ 経由で JAR ファイルを実行する方法が正確にはわかりません ( OS 固有の C++ からエスケープする明白なsystem()orCreateProcess()または呼び出し以外)。fork()\exec()

とはいえ、TCP または UDP ソケットを介して通信する複数の独立したプロセスでアプリケーションを構成することを検討することもできます。次に、それぞれの作品を最も意味のある言語で書くことができます。たとえば、アプリケーションの中央コア (C++ で記述) で TCP サーバーをセットアップし、「ツールバー」アプリ (Java で記述) から専用のソケット接続を介してコマンド パケットをコア プログラムに送信することができます。考えてみれば、UDPの方が優れているかもしれません。とにかく、あなたは要点を理解します。

また、Qt を拒否する理由がよくわかりません。多くの商用アプリで使用されており、かなりカスタマイズ可能です (告白しなければなりませんが、他の理由から、私自身は Qt の大ファンではありません)。

于 2011-11-05T06:57:44.137 に答える