2016-09-19 2 views
1

자바 내부에서 초기화 및 작성을 위해 JNA 객체를 전달할 수 있습니까?JNA 객체는 Java 코드 내에서 참조 또는 값에 의해 전달됩니까

-> 구조체의 각 멤버 및 배열을 채우기위한 다른 메서드를 초기화하는 메서드를 사용할 수 있습니까?

나는 당신은 자바 객체에 기본 메모리를 동기화하고 있습니다

+0

당신은 "JNA 객체"에 의해 무엇을 의미합니까? JNA는 원시 함수 _and_ data를 조작하는 도구를 제공합니다. – technomage

+0

예를 들어, 구조체 개체, 주위에 패스, java, 동일한 구조체 또는 주위에 동일한 구조체의 복사본을 전달합니까 -> 나는 같은 개체를 조작 할 또는 새 메모리 위치로 값의 복사본을 만듭니다. – gismo

답변

0

에는 구글에 답 /도 https://jna.java.net/ 발견,하지만 당신은 기본 메모리에 자바 객체를 오버레이 할 수 없으며 자바 객체 메모리를 노출하지한다 네이티브 코드에 직접. JNA가 수행하는 작업은 Java 객체와 원시 메모리를 연결하고 두 객체를 동기화하는 메소드를 제공하는 것입니다.

원시 메모리 :

Pointer memory = new Memory(128); 
memory.setInt(0, 1234) 

구조적 데이터 :

MyStructure s = new MyStructure(); 
s.int_field = 1234; 
s.write(); 

s = new MyStructure(native_pointer); 
s.read(); 
System.out.println("Field: %s", s.int_field); 
+0

간단한 동기화 예제가 제공됩니다. 또한 자바에서 struct 객체를 전달하고 값을 변경하면 실제 값을 변경합니까 아니면 로컬 버전 만 변경합니까 (일반적으로 Java가 작동하는 것처럼) – gismo