일반적으로 매개 변수를 전달할 때 Structure.ByReference
을 명시 적으로 지정할 필요는 없습니다. 매개 변수 인 경우 .ByReference
을 서명에서 삭제하면 정상적으로 작동합니다. 이 필드는 구조 내에서라면
는 다음 JNA는 필요가 명시 적으로 .ByReference
을 제공하는 것이이 경우 값을 기준으로 Structure
을 해석합니다.
이렇게하는 것이 하나의 방법입니다.
class MyStructure extends Structure {
class ByReference extends MyStructure implements Structure.ByReference {
public ByReference() { }
public Byreference(Pointer p) { super(p); read(); }
}
public MyStructure() { }
public MyStructure(Pointer p) { super(p); read(); }
}
MyStructure s;
// ...
MyStructure.ByReference ref = new MyStructure.ByReference(s.getPointer());
예, 구조 내의 필드이며 JNA 구조체가 있습니다. 이제 구조체 필드에 할당 할 수 있도록 Structure.ByReference로 변환해야합니다. –
JNA는 네이티브 메모리에서 포함 구조를 읽을 때 필드를 자동으로 초기화합니다. 직접 초기화하려면 위의 패턴을 사용하여 MyStructure.ByReference 인스턴스를 만들고 초기화하거나 기존 구조 또는 메모리 블록에서 초기화해야합니다. – technomage