2009-01-30 16 views
6

Aşağıdaki işlev java'ya nasıl geçer?
1) yapı RecBuff
JNA Yapısı ve İşaretçi eşlemesi

nasıl eşleme yok
2) Güncellemeler durumunu doldurur: Bu fonksiyon ne yapar

GEÇERSİZDİR WriteToStruct (BOOL * Durum, STRUCT_MSG RecBuff)

Java'da bir bool işaretçi ve işlev tarafından güncellenen yapı verilerine erişir?

cevap

7

JNA ve structs ile ilgili başka bir sorun arıyordum ve Google beni buraya yönlendirdi. Umarım bu yardımcı olur.

JNA API

kaynaktan sonra yapısını tanımlamak ilk değere göre bir yapıya geçmesine Structure.ByValue uygulayan bir boş bir sınıf tanımlar. Bağımsız değişken veya dönüş türü olarak ByValue sınıfını kullanın.

// 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

Sen referans olarak değer geçirmek için değini sınıfını kullanabilirsiniz. Varsayım BOOL IntegerByReference'ı kullanabileceğiniz bir int.