假设厂商的dll有函数: int Proc(int ch,  LPVOID HandlerCallback);其中是HandlerCallback是回调函数指针,这个本地方法Proc的作用是向设备注册一个回调函数,当某个事件发生时设备自动调用我们在JAVA里写的回调函数。
    回调函数的原型:int CALLBACK CallFunction(ExaEVENT Event); ExaEVENT是厂商定义的事件数据结构。
    通过swig和jni已经编译了java可以使用的dll,回调函数指针被转换成SWIGTYPE_p_int类型,我不知道这个类型是否合理,还有在java里,我怎么把自己写的回调函数的指针(当然,java里没有指针的说法)传给dll呢

解决方案 »

  1.   

    “我怎么把自己写的回调函数的指针(当然,java里没有指针的说法)传给dll呢”java没有指针,但指针的值是个整数,可以用一个int变量来保存值,传递给dll以后再强转成所需的native指针类型,这招是从android源码里面学的
      

  2.   

    定义一个接口,接口里面定义回调函数,使用时实现回调函数,传给dll的参数就是接口的类型