java jni 예제

void return이있는 일반적인 JNI 함수에는 다음과 같은 서명이 있습니다 (예 : 첫째, 메서드의 정의를 만들려면 Java 컴파일러의 -h 플래그를 사용해야합니다 : Java 네이티브 인터페이스 (JNI)는 Java 코드가 네이티브 응용 프로그램을 호출 할 수있는 프레임 워크입니다. C, C++ 및 Objective-C와 같은 언어로 작성된 라이브러리입니다. 솔직히 말해서, JNI를 사용하는 것 외에 다른 선택이 있다면 다른 일을하십시오. 네이티브 라이브러리를 다루는 것은 Java 응용 프로그램을 지원할 때 큰 고통의 원천입니다. 즉, 때로는 JNI를 사용하는 것을 피할 수 없습니다. 이 문서에서는 JNI 브리지를 작성하는 데 필요한 비교적 간단한 단계를 요약합니다. 또한 JNI는 C 브리지를 거치지 않고도 어셈블리 코드에 직접 액세스할 수 있습니다. [2] 어셈블리에서 Java 응용 프로그램에 액세스하는 것도 같은 방식으로 가능합니다. [3] Java 9에서 javah는 더 이상 사용되지 않으며 더 이상 헤더 파일을 생성하는 권장 방법이 아닙니다.

대신 javac에 -h 플래그를 전달하여 네이티브 헤더를 작성할 디렉터리를 알려줍니다. 따라서 Java 8 또는 9를 사용하여 단일 단계에서 헤더를 컴파일하고 생성합니다: Java 또는 Scala를 사용했든 관계없이 Sample1.h는 정확히 동일하게 보입니다: « -D » 명령줄 옵션은 Java 플랫폼 시스템 속성을 설정합니다. java.library.path 속성을 « . »로 설정하면 Java 가상 시스템이 현재 디렉터리에서 네이티브 라이브러리를 검색하도록 지시합니다. 네이티브 라이브러리와 인터페이스할 Java 또는 Scala 클래스를 작성합니다. 공유 라이브러리의 모든 기호를 나열하는 nm을 시도하고 sayHello() 함수를 찾습니다. 함수 이름 Java_HelloJNI_sayHello 를 « T »(정의)로 확인합니다. 그런 다음 UserData 형식의 개체를 관리하는 몇 가지 기본 메서드를 사용하여 ExampleObjectsJNI라는 또 다른 Java 클래스를 만듭니다: 예제 1: C++ 벡터를 Java ByteArray로 변환하고 Java 프로그램 컴파일을 « TestJNIPrimitive.class »로 반환합니다. C / C + + 헤더 파일 « TestJNIPrimitive.h »를 생성 : 실용적인 팁 : 캐스팅을 두려워하지 마십시오! JNI는 C 기본 유형과 j 접두사 유형 간에 캐스팅에 놀라걸리게 내성이 있습니다. 그러나 대부분의 C++특정 개체의 경우 일부 수동 작업이 필요합니다.

Java 바이트는 C ++ char / 서명되지 않은 char. 간단히 말해서 Java 가상 컴퓨터를 실행할 수있는 모든 컴퓨터 또는 장치에서 실행할 수 있으며 예상대로 원활하게 작동합니다.