JNI 등록 정적 및 동적 등록 코멘트

JNI 등록 코드가 C 층에서 자바 코드를 호출하는 객체 계층을 달성하기 위해, 방법 자바 층 (변성 천연 키워드) 및 C 층 연관 방법을 말한다. JNI 등록이 고정 포맷 메소드 이름을 관련 정적 등록 두 종류의 정적 등록 및 동적 등록으로 나뉘는, 동적 등록 우리가 동적 등록을 사용하는 것이 쉽게 유연, 재생할 수있는 방법 이름 사이의 동적 맵핑을 추가하여 연결한다. 등록을 진행하기 전에, 당신이 (될 수있는 Java 응용 프로그램을 작성)이 Clion 도구를 다운로드하고 일식 필요, 우리는 등록을 시작할 수 있습니다.

정적 등록

1. 먼저, 이클립스 이름은 임의의 수 있습니다, 새로운 자바 응용 프로그램을 만듭니다, 콜 JavaJni로, 다음 src 디렉토리 이름 CLZ에서 새 패키지를 만들고, 새로운 자바 클래스 Register.java에서 다음 CLZ 패키지, 클래스는 다음과 같이 네이티브 메소드는 쓰기 :

2. 명령 줄로 이동 Register.java 디렉토리에 와서 Register.class 파일 생성 Register.java 명령 javac의를 사용하여
다시 src 디렉토리에, 3. 명령 줄을 명령하여 javah는 clz_Register.h 생성 clz.Register
에서 4 Clion, 선택한 C ++ 라이브러리, 라이브러리 유형을 작성할 공유, jni.h jni_md.h 파일과 파일과 JDK / 복사 등이
세 번째 단계는 바로 새로운 Clion에서 생성 clz_Register.h 할 파일을 복사하는 것입니다 (5) 프로젝트
는 다음과 같이 참조 6. jni.h 수정 :

  1. 새로운 파일 clz_Register.c는 해당 기능 .H을 달성하기 위해, clz_Register.h 소개

  1. CMakeLists.txt에서 Clion 프로젝트에 빌드 구성을 추가

  • 첫 번째 매개 변수의 firstlib은 컴파일 후 생성 된 동적 라이브러리의 이름을 나타냅니다
  • 두 번째 인수는 STATIC 선택할 수 있습니다 또는 공유가 각각 정적 라이브러리 또는 동적 라이브러리, 우리는 일반적으로 동적 라이브러리를 사용
  • 세 번째 이후의 파라미터는 파일 저장을 컴파일 할 필요성을 표현할

Clion 선택 9. 빌드 - BuildProject은 (dylib로 DLL로 윈도우 맥) cmake - 빌드 - 디버그 libfirstlib.dylib에서 생성 될 수있는
10 단계의 생성 항목을 복사 할 8 libfirstlib.dylib 일식 libs와 디렉토리를 (새로운)
11. Register.java로드 라이브러리없고, 라이브러리 함수 호출

동적 등록

  1. 첫째, 새로운 일식 Java Application을 생성, 이름은 콜 JavaJni로, 다음 레지스터라는 이름의 src 디렉토리에서 새 패키지를 만들고, 임의의 수 있습니다, 레지스터 패키지의 새로운 자바 클래스 DynamicRegister.java, 클래스, 다음과 같이 네이티브 메소드는 쓰기 :

  1. Clion에서, jni_md.h 파일과 파일 jni.h을 공유 선택한 C ++ 라이브러리, 라이브러리 유형을 작성하고 JDK / 복사 포함
  2. 다음과 같이 DynamicRegister.c 새로운 파일 및 도입, 두 가지 방법을 구현 jni.h

  1. 동적 등록 추가

  1. CMakeLists.txt에서 Clion 프로젝트에 빌드 구성을 추가

  • 첫 번째 매개 변수의 firstlib은 컴파일 후 생성 된 동적 라이브러리의 이름을 나타냅니다
  • 두 번째 인수는 STATIC 선택할 수 있습니다 또는 공유가 각각 정적 라이브러리 또는 동적 라이브러리, 우리는 일반적으로 동적 라이브러리를 사용
  • 세 번째 이후의 파라미터는 파일 저장을 컴파일 할 필요성을 표현할

6. 선택 Clion에서-BuildProject 빌드 cmake - 빌드 - 디버그 libfirstdylib.dylib에서 발생 될 수있다 (dylib로 맥을 DLL로 창)
단계 8 이클립스 프로젝트 아래에 libs와 디렉토리 libfirstdylib.dylib 생성에 복사됩니다 (7) (새로운)
8. DynamicRegister.java로드 라이브러리없고, 라이브러리 함수 호출

 

추천

출처www.cnblogs.com/GX1234/p/11611410.html