2016-05-03 8 views
0

Java:Wie übergeben Sie ein Array von Zeiger von JNA?

Pointer[] myArray; 

myArrayis ein Array von Zeigern.

C++

myfun(void** myArray){ 
    void *a = myArray[0]; 
} 

wie ein Array des Zeigers durch JNA passieren? Ich habe versucht myfun(Pointer[] myArray) in Java, aber es berichtet nicht Unterstützung Argument Typ in der Laufzeit wie folgt: verursacht durch: java.lang.IllegalArgumentException: class [Lcom.sun.jna.Pointer;

public class xxPointer extends Structure { 
    public Pointer myPointer; 

in C++: ist kein Argument Typ unterstützt (in Methode myfun in Klasse com.xx.yy.zz)

+0

Fügen Sie Ihr vollständiges JNA-Mapping. 'Pointer []' _is_ wird unterstützt, aber nicht unbedingt in dem Kontext, in dem Sie es tatsächlich verwendet haben. – technomage

+0

Vielen Dank, es scheint void ** in C++ kann in Pointer [] in Java umgewandelt werden, aber Pointer [] in Java kann nicht in void ** in C++ konvertiert werden –

Antwort

0

Dank, habe ich dieses Problem eine Struktur in Java erstellen gelöst:

struct xxPointer { 
    void* myPointer; 
}; 

Schnittstelle: in Java:

myFun(xxPointer.ByReference br); 

in C++:

myFun(xxPointer * xp) 

in Java:

xxPointer.ByReference rp = new xxPointer.ByReference(); 
xxPointer.ByReference pointers = (xxPointer[]) rRecord.toArray(array count); 
assignment value for pointers[i].myPointer 
myFun(rp); 
Verwandte Themen