JNA对象是通过引用还是通过java代码中的值传递
问题描述:
我可以通过JNA对象进行初始化并在java内写入内容吗?JNA对象是通过引用还是通过java代码中的值传递
- >是否有可能有一个方法来初始化结构的每个成员和其他方法来填充数组等等。
我发现谷歌没有答案/也不https://jna.java.net/
答
可以同步本机内存为Java对象,但你不能覆盖在本机内存Java对象,你不应该将Java对象的内存直接转换为本地代码。 JNA所做的是将本机内存与Java对象关联起来,并提供同步这两者的方法。
原始内存:
Pointer memory = new Memory(128);
memory.setInt(0, 1234)
结构化数据:
MyStructure s = new MyStructure();
s.int_field = 1234;
s.write();
s = new MyStructure(native_pointer);
s.read();
System.out.println("Field: %s", s.int_field);
+0
你能否提供一个简单的例子来说明应该如何进行同步? 另外,如果我周围的java中传递一个结构对象并更改值,我是否更改实际值或更改唯一的本地版本(因为java通常工作) – gismo
你所说的 “JNA对象” 是什么意思? JNA提供了操作原生函数和数据的工具。 – technomage
例如,结构对象,我传递,在java内部,相同的结构或我传递同一个结构的副本 - “我操纵相同的对象,或者我创建一个新的内存位置的值的副本。 – gismo