回调函数指针jna

时间:2014-04-14 13:57:56

标签: java callback

所以我在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));

0 个答案:

没有答案