布尔的阵列我想与在struct java和写入C. 一个DLL之间传送布尔值的阵列C中的结构是这样的:JNA和在结构
struct Parameters_VE3_RSG_v19b_Protect_ {
real_T Constant_Value;
boolean_T Memory_X0;
boolean_T Logic_table[16];
};
在java中我定义下面的类访问它:
public class VehicleModel {
public interface CLibrary extends Library {
public static class Parameters_VE3_RSG_v19b_Protect_ extends Structure {
public static class ByReference extends Parameters_VE3_RSG_v19b_Protect_ implements Structure.ByReference {}
public double Constant_Value ;
public boolean Memory_X0 ;
public Pointer Logic_table ;
}
}
}
主其中我想给一个值到布尔数组的这一部分:
public class SpecificVehicle {
public static void main(String[] args) {
Vehicle vh = new Vehicle();
vh. parameters .Constant_Value = -1.000000;
vh. parameters .Memory_X0 = false;
CLibrary.Parameters_VE3_RSG_v19b_Protect_.ByReference ltref = new CLibrary.Parameters_VE3_RSG_v19b_Protect_.ByReference();
ltref.Logic_table = new Memory(16*Native.getNativeSize(?????????) )); //???
}
}
问题是我不知道如何填充(和读取)布尔数组,我在http://www.eshayne.com/jnaex/上找到了一个字符串数组和双精度数组的例子,但是我不知道如何翻译它们,所以它们会为一系列布尔值工作。
有人可以给一个小例子如何访问一个布尔数组布尔值?
非常感谢, 弗兰克
'boolean_T'有多大?选择一个相同大小的Java类型,并在你的'Structure'中创建一个这种类型的基本数组。 *不要为逻辑表分配单独的内存,除非你的本地结构完全相同。 – technomage
boolean_T是C中的一个字节,所以我在java中使用了bety,并且工作正常。你是什么意思:不要为逻辑表分配单独的内存,除非你的本地结构是一样的。 – fengels
您的本机和Java结构不匹配。您的本地定义将字节数组放在与'struct'相同的内存块中,而您的Java'Structure'指向一个单独的内存块。 – technomage