JNI HelloWorld


一.紹介JNIはJava Native Interfaceの略である
 
二.JNIの書き込み手順(この例ではjavaがcに2つの整数パラメータを入力し、cが加算結果をjavaに返すことを実現する)1 native宣言付きメソッドを記述するjavaクラス2を例によって紹介する   Javacコマンドを使用して作成したjavaクラスをコンパイルする
 
package com.liurunfeng.helloworld.jni;

public class HelloWorldJNI 
{
	public native int sum(int a , int b); 

	public static void main(String[] args)
	{
		System.loadLibrary("testjni");
		HelloWorldJNI hj = new HelloWorldJNI();
		System.out.println(hj.sum(4, 2));
	}
}

 我々のsum()メソッドの宣言に注意してください.java以外の言語で実装されていることを示すキーワードnativeがあります.方法には、c/c++言語で実装するため、実装は含まれません.システム.loadLibrary(「testjni」)というコードに注意してください.これは静的初期化ブロックで定義されています.システムはtestjni共有ライブラリをマウントするために使用されます.これは、後で生成したtestjni.dllです(testjni.soなどの他のオペレーティングシステムが他の形式である場合).
3 javahを使う?jni javaクラス名拡張子hのヘッダファイルを生成
   dos下javah com.liurunfeng.helloworldJNI   (経路に注意、comの現在のディレクトリの下にある)
   生成    com_liurunfeng_helloworld_jni_HelloWorldJNI.h      (C/C++必要なヘッダファイル)
 
4 cダイナミックリンクファイルを作成し、visual c++でwin 32ダイナミックリンクライブラリプロジェクトを作成する空のプロジェクトを作成する   com_liurunfeng_helloworld_jni_HelloWorldJNI.hプロジェクトに参加しjdk 1.6.0_10includejni.hおよびjdk 1.6.0_10\include\win32\jni_md.h 2つのヘッダファイルをc++エンジニアリングにコピーして修正  com_liurunfeng_helloworld_jni_HelloWorldJN I.h#includeを#include"jni.h"に変更
5 c++ソースファイル実装java呼び出し関数(c++コード)の作成
#include "com_liurunfeng_helloworld_jni_HelloWorldJNI.h"
#include <iostream>

using namespace std;

JNIEXPORT jint JNICALL Java_com_liurunfeng_helloworld_jni_HelloWorldJNI_sum(JNIEnv * evn, jobject jj, jint a, jint b)
{
	return a + b;
}

 
 
6  コンパイル後、testjni.dllはエンジニアリングDebugディレクトリの下に生成されます.このファイルをpathに追加してjavaアプリケーションに見つけさせます.再起動する前に開いたeclipse
   Javaコードを実行します.