0

我正在使用 JNA 和 JNAerator 与一个老化的 lm_sensors 库集成,以便为我的盒子内的每个温度传感器创建 MBean。首先我调用这个方法:

// C edition
const sensors_chip_name *sensors_get_detected_chips(int *nr);

// Java edition
sensors_chip_name sensors_get_detected_chips(IntByReference nr);

.. 效果很好。随后我需要致电:

// C edition
int sensors_get_feature(sensors_chip_name name, int feature, double *result);

// Java edition
int sensors_get_feature(sensors_chip_name.ByValue name, int feature, DoubleByReference result);

..我缺乏的是如何获取结果sensors_get_detected_chips并将其按值传递给 . 的第一个参数sensors_get_feature

4

1 回答 1

1

下面允许ByValue从基类初始化结构的一个版本。

public class sensors_chip_name extends Structure {
    public class ByValue extends sensors_chip_name implements Structure.ByValue {
        public ByValue(sensors_chip_name orig) {
            this(orig.getPointer().share());
        }
        public ByValue(Pointer p) {
            super(p);
        }
        public ByValue() { }
    }
    public sensors_chip_name() { }
    public sensors_chip_name(Pointer p) { 
        super(p);
        read();
    }
}
于 2014-06-18T15:56:39.920 回答