JavaのJNIネイティブメソッドの実装に

最高のグラフィカルインターフェイスでスタック構造上の要件の迷路を解決するためのクラス・データ構造に関する最近の質問、あなたが表示されたパスの迷路を見つけるでしょう。もともとあなたは、オペレーティングシステムのグラフィックスライブラリを見て、本当に難しいですので、私は、C言語のプログラムで書かれたこのようなハイブリッドプログラミングアルゴリズムをJavaのグラフィカルインタフェースを書くことを選んだ呼び出さない場合でも、グラフィカルなインターフェイスが、C言語のグラフィカル・インタフェースを記述するために一緒にC言語で、意図しました。ここではない、具体的なJavaのグラフィカルなインターフェイスのアルゴリズムとCの実現と説明したが、唯一の「部分的に接続されている」JavaとCのを導入しました。

 

地元の方法を使用しての前提

Javaは確かであるが、効率が大幅に向上するが、一度計算操作の多数に遭遇し、またはC言語よりも高速に実行されています。この場合、我々は残りの部分はJavaによって処理されている間、に対処するためのC言語のアルゴリズムの重要な部分を考慮することができます。

Javaのセクション

Javaのような要件はネイティブのキーワードを使用することを目的関数の宣言に対処するためのC言語、、:

公共の静的なネイティブ無効何か();

この文では、この方法のJVM定義を通知すると、特定の実装が外側に完了し、JVMをウェイクネイティブな方法は、C関数のための唯一の責任であり、この文書をコンパイルした後。そして、すべての操作が完了しているが、また、後のような静的ファイルを、マークするドメインを追加します。

静的{System.loadLibraryを(「何か」)。}

そして、再コンパイルします。周りに二回コンパイルの合計。

パートC

パートCに関しては、それはCプログラムを呼び出すために、JVMであるので、それは最初のJVMは、Cプログラムを識別できるようにする必要があります - だけでなく、JVMは、Java形式を識別することができますので、あなたのCコードは、JVMが認識できるスタイルに合わせて書き込まれるため。

ここでは、javahは、このプログラムを使用して、このプログラムは、その後、我々は、この関数の宣言ヘッダーファイルをコピーしたい場合は、自動的にローカルクラスファイルの前にコンパイルされ第一の方法に従ったC関数宣言JVMの期待のスタイルが含まれているCヘッダファイルを生成するために私たちを助け(Cコードで通常メイン関数に相当)Cプログラムの入り口として、それらのCソース・ファイルへ。

後のプログラムはいくつかのパラメータは、Javaとの相互作用関与していない場合は、他のC関数の残りの部分を処理するために、このいわゆる「メイン」関数の後に、それは完全にC言語の標準で記述されています。

 

操作に参加

Javaは懸念しているために、それはクロスプラットフォームの性能を達成するために、JVM上で動作します。しかし、C言語のため、それは、オペレーティングシステムに密接に依存しています。だから、結果のJavaとC混合プログラミングはC言語の影響を受けているが、Javaのクロスプラットフォーム機能が限定されている - JVM自体がプラットフォームの制限で、JVMピュアJavaアプリケーション上で動作するクロスプラットフォームである理由です。オペレーティングシステムの制約の領収書以来、私たちは、WindowsとLinuxを分離しなければなりませんでした。

Linuxの場合、ヘッダファイルを取得した後、使用します。

gccの-fPIC -I JDKPATH /含ま-I JDKPATH /含める/ linuxの-shared -o libname.so name.c

このコマンドは、コンパイルされます。あなたは、ライブラリパスにする.soファイルのパスを追加した後。

Windowsの場合、それはコンパイラのCL(マイクロソフトコンパイラ)によって処理することができますが、ライン・インタフェースを命じるかもしれない人々のためのグラフィカルなIDEに使用されているが、ヘッダファイルを取得した後、寒さではありません。ここに、動的ライブラリファイルのIDEを生成するグラフィカルな方法を使用して説明します。

1)あなたは/ jni.h中に含めるの下にJDKのJavaのインストールディレクトリにコピーする必要があり、JDK / Cエディタを対応するディレクトリの下のディレクトリに含まれるように/のWin32 jni_md.hが含まれます。ディレクトリは、このサブディレクトリ内にMinGW64内のDev C ++には、Visual Studioで直接見ることができます。

ない場合は、コピーすることができ、Javaプロジェクトフォルダに対応するファイルEclipseは)場合2)エディタプログラムを使用してDLLを確立した後、コンパイラは、DLL Eclipseを(コピーするには、このプロジェクトでは、ファイルname.dll Cを生成しますJDK / binにまたはJRE / binに。

 

しかし、WindowsまたはLinuxのかどうか、そして、適切なローカルJavaクラスのソースファイルのプロジェクトに戻って行かなければならない、何かがあなたのdllファイルの名前であり、静的なタグフィールドを追加する前に言いました。次に実行するためのJavaコードをコンパイルします。

 

おすすめ

転載: www.cnblogs.com/fusiji/p/11409864.html