布爾的陣列我想與在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