2012-03-13 5 views
4

DLL 함수를 전달하기 위해 JNA 구조체를 확장하는 클래스의 배열을 만들려고합니다. 값을 데이터베이스에서 ArrayList로 읽었으므로 배열에 넣어야합니다. 나는 단순히 ArrayList를 같은 크기로 새로운 배열을 설정하면JNA, 구조 및 배열

java.lang.IllegalArgumentException: Structure array elements must use contiguous memory (bad backing address at Structure array index 1) 

: 첫째, ArrayList에의 toArray() 메서드를 사용하려고하지만 네이티브 함수를 호출 할 때 그것은 나에게 다음과 같은 예외를 반환 내 클래스에서 구조체의 '필드'를 설정하면 NullPointerException을 반환합니다.

누군가 나를 해결할 수 있습니까?

+0

pls는 배열로 변환하는 데 사용하는 코드를 보여줍니다. – Adrian

+1

매우 간단합니다. MyClass myClass = new MyClass(); MyClass [] myArray = (MyClass []) myClass.toArray (sizeOfArray); –

답변

2

Structure.toArray()는 연속적으로 할당 된 구조체 블록을 제공합니다. "values"의 ArrayList에서 초기화하기 전에이 구조체의 배열을 만듭니다.