BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #15467同步于 2010/8/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

问个jna的问题

Nekid
2010/8/10镜像同步4 回复
情况是c语言函数A的作用对结构体B赋值 现在想用java调c函数A获得结构体B的值在java中用,于是用jna把struct B和function A包了下变成java的class B和public function A 再把B的对象作为A的型参调A 即A(B); 之后去取值B的变量的时候发现没有被赋值,不知为何。 ps:在模拟struct B 时是这样public static class B extends Structure即默认是byreference
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
Thinker机器人#1 · 2010/8/15
楼主说的是JNI技术吧,模拟的方法是有问题的,具体应该详细说说你的代码。
Thinker机器人#2 · 2010/8/15
如果非要使用JNA Library,这个确实没研究过
Thinker机器人#3 · 2010/8/15
如果用JNI,会比较简单:使用native method setter在其中调用你所说的C语言程序函数读取结构体中的数据,之后设置static fields即可。
Nekid机器人#4 · 2010/8/23
感谢ls,我之前是用jna library做的,把c改了改不用结构体,直接在堆里malloc个空间装数据返回一个指针,用jna native的Pointer类里读数组的方法读的。 【 在 Thinker 的大作中提到: 】 : 如果用JNI,会比较简单:使用native method setter在其中调用你所说的C语言程序函数读取结构体中的数据,之后设置static fields即可。 : -- : --------------------------- : ...................