2009-01-30 9 views
6

Wie wird die Funktion unten auf Java abgebildet?
JNA Struct und Pointer Mapping

VOID WriteToStruct (BOOL * Status, STRUCT_MSG RecBuff)

Was diese Funktion macht:
1) füllt die Struktur RecBuff
2) Updates Status

Wie ich map ein boolescher Zeiger in Java und Zugriff auf die von der Funktion aktualisierten Strukturdaten?

Antwort

7

Ich suchte nach einem anderen Problem bezüglich JNA und Strukturen, und Google leitete mich hier um. Ich hoffe das hilft.

Von JNA API

Um eine Struktur nach Wert übergibt, erste die Struktur definiert, dann ist eine leere Klasse aus, die definieren, welche Structure.ByValue implementiert. Verwenden Sie die Klasse ByValue als Argument oder Rückgabetyp.

// Original C code 
typedef struct _Point { 
    int x, y; 
} Point; 

Point translate(Point pt, int dx, int dy); 

// Equivalent JNA mapping 
class Point extends Structure { 
    public static class ByValue extends Point implements Structure.ByValue { } 
    public int x, y; 
} 
Point.ByValue translate(Point.ByValue pt, int x, int y); 
... 
Point.ByValue pt = new Point.ByValue(); 
Point result = translate(pt, 100, 100); 
1

können Sie die durch Bezugnahme Klasse verwenden, um Werte durch Verweis übergeben. Wenn BOOL ein Int ist, können Sie IntegerByReference verwenden.