所以我在C语言中将原生函数声明为int NgSetEvent (int event, long callback)
。 long Callback表示回调函数指针。回调原型声明为int oncodeline(int code, int documentid, char *string)
。应使用方法NgSetEvent
注册回调。问题是如何获得指向该函数的指针应该是long还是Nativelong?我尝试了很多不同的方法,但没有一个给出结果。从未调用过回调。
我试图像Turn a Callback into a Pointer in JNA中所说的那样做,但没有成功。我不知道该怎么办了。 任何帮助将不胜感激。
OnCodeline
public interface OnCodeline extends Callback {
int oncodeline (int code, int documentid, byte[] string);
}
OnCodelineStruct
public class OnCodelineStruct extends Structure {
public OnCodeline onc;
@Override
protected List getFieldOrder() {
return Arrays.asList(new String[] { "onc" });
}
}
主要课程
OnCodelineStruct onCodelinStruct;
onCodelinStruct = new OnCodelineStruct();
onCodelinStruct.onc = new OnCodeline() {
@Override
public int oncodeline(int code, int documentid, byte[] string) {
System.out.println("This IS a CALLBACK!");
return 0;
}
};
sbDll.NgSetEvent(0, onCodelinStruct.getPointer().getNativeLong(0));