JAVA JNI 로 컬 방법 호출

2387 단어 자바C++cC#jni
Native 방법 설명:

package cn.com.sky.jni;
public class HelloNative {
	public static native void hello();
	public native void test();
}

.class 파일 로 컴 파일 한 후 자바 명령 을 실행 하여 헤더 파일 을 만 듭 니 다.생 성 된 헤더 파일 규칙 은[패키지 이름클래스 이름.h],그 중 가방 이름 의"."은 자동 으로""로 대 체 됩 니 다.위 글 에서 생 성 된 헤더 파일 은 cn 입 니 다.com_sky_jni_HelloNative.h

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class cn_com_sky_jni_HelloNative */

#ifndef _Included_cn_com_sky_jni_HelloNative
#define _Included_cn_com_sky_jni_HelloNative
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     cn_com_sky_jni_HelloNative
 * Method:    hello
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_cn_com_sky_jni_HelloNative_hello
  (JNIEnv *, jclass);

/*
 * Class:     cn_com_sky_jni_HelloNative
 * Method:    test
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_cn_com_sky_jni_HelloNative_test
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

cn 작성com_sky_jni_HelloNative.c

#include <stdio.h>
#include "cn_com_sky_jni_HelloNative.h"

JNIEXPORT void JNICALL Java_cn_com_sky_jni_HelloNative_hello(JNIEnv* env, jclass cls){
	printf("native
"); } JNIEXPORT void JNICALL Java_cn_com_sky_jni_HelloNative_test(JNIEnv* env, jobject obj){ printf("test
"); }

도 구 를 사용 하여 HelloNative.dll 및 HelloNative.lib(본인 이 사용 하 는 것 은 VS 2008)를 생 성 합 니 다.도 구 를 사용 할 때 헤더 파일'jni.h'등 을 도입 해 야 합 니 다.
dll 을 호출 합 니 다.호출 프로그램 을 실행 할 때 dll 파일 을 찾 거나 인자-Djava.library.path=D:\dll 로 가 져 올 수 있 도록 PATH 를 설정 해 야 합 니 다.그 중에서 D:\dll 은 dll 과 lib 파일 의 디 렉 터 리 를 로 컬 에 배치 합 니 다.

package cn.com.sky.jni;

/**
 * @author Administrator
 *
 */
public class HelloNativeMain {
	
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.loadLibrary("HelloNative");
		HelloNative.hello();
	}

}

좋은 웹페이지 즐겨찾기