JNI_Java Native Interface
1955 단어 interface
자바 네 이 티 브 인터페이스 (JNI), 자바 와 c / c + + 의 인 터 페 이 스 는 간단 한 예제 입 니 다.
javah 는 native 방법 에 대응 하 는 헤더 파일 을 생 성 할 수 있 습 니 다. javap 는 방법 이나 속성의 서명 을 볼 수 있 습 니 다.
예시
1. 네 이 티 브 자바 코드 쓰기
package com.jni;
import java.util.Date;
//javah com.jni.Hello
//com_jni_Hello.h
public class Hello {
public int property;
//javap -s com.jni.Hello
//(ILjava/util/Date;[I)I
public int function(int foo,Date date,int[] arr){
System.out.println(foo+"="+date+""+arr);
return 0;
}
public native void hello();
public static void main(String[] args) {
System.loadLibrary("nativeCode");
Hello hl = new Hello();
hl.hello();
}
}
2, javah 를 통 해 헤더 파일 com 생 성jni_Hello.h
javah com.jni.Hello
3. 자바 p 를 통 해 방법 과 속성 서명 보기
javap -s com.jni.Hello
4. vc 또는 vs 에 DLL 프로젝트 (프로젝트 이름 은 vativeCode) 를 새로 만 들 고 생 성 된 헤더 파일 을 프로젝트 에 추가 합 니 다. 부족 한 의존 헤더 파일 이 있 으 면 jdk 디 렉 터 리 (% java home% \ include) 에서 찾 아 프로젝트 에 참여 합 니 다.
5. C / C + + 코드 쓰기 (. cpp 파일 중)
#include"com_jni_Hello.h"
#include<iostream>
using namespace std;
JNIEXPORT void JNICALL Java_com_jni_Hello_hello(JNIEnv * env, jobject obj)
{
cout<<"hello native"<<endl; //
jclass hello_clazz = env->GetObjectClass(obj);// class
jfieldID field_prop = env -> GetFieldID(hello_clazz,"property","I");//
jmethodID methodId_func = env->GetMethodID(hello_clazz,"function","(ILjava/util/Date;[I)I");//
env->CallIntMethod(obj,methodId_func,0L,NULL,NULL);//
}
6. DLL 프로젝트 를 실행 하여 dll 파일 생 성 (nativeCode. dll) 환경 변수 에 dll 파일 설정
7. 자바 코드 실행
hello native
0=nullnull
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
조건자로 필터링프로그래밍에서 컬렉션이 있을 때 요구 사항을 충족하는 부분을 필터링하고 나머지는 버려야 하는 경우가 있습니다. 자세한 예는 환자 기록 목록이 있고 미성년 환자 목록을 가져오려는 경우입니다. 이 코드를 자바 파일에 복...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.