我正在为solution which allows to build such external libraries for iOS C库创建JNA映射。一路上我也在学习C.我遇到了一个结构,我不确定如何映射,而且我一直无法找到任何资源来帮助。
以下是struct
的片段SASL
“nVersion”是普通成员,可以在java中轻松映射。
我的问题在于功能指针SetParameter。 (我认为这就是它)
在Java中,结构体被映射到jna.Structure类的子元素。因为这是一个类(不是接口),所以我无法定义没有主体的方法头,这就是我如何映射方法。
有谁知道这个映射应该是什么样的?
由于
答案 0 :(得分:1)
JNA使用Callback个对象来表示函数指针,并包含a description of callback usage。
创建一个派生自Callback
的接口,它实现一个与函数指针匹配的方法。
public class MyStructure extends Structure {
public MyCallback callback;
public interface MyCallback extends Callback {
void invoke();
}
}
如果从本机内存中读取结构,您将获得一个可用于调用函数指针的代理对象。
从Java代码中,您可以为字段分配一个新值,如下所示:
MyStructure s = ...;
s.callback = new MyCallback() {
public void invoke() {
// your callback implementation here
}
};