1

我正在尝试使用 JNA 使用来自 Java 的本机 dll。我是 Java 和 JNA 的新手。我在使用回调函数作为 dll 导出方法的函数参数时遇到问题。

这是本机函数的外观,

RegisterCallback(UNUM32 hMod, UNUM32 hCLL, CALLBACKFNC EventCallbackFunction)

这个方法基本上告诉 DLL 在 DLL 检测到某些事件时使用这个 java 方法作为回调。

这是回调函数原型,

EventCallbackFunction(UNUM32 eventType, UNUM32 hMod, UNUM32 hCLL, void *pCTag,   void *pTag)

这是java端的实现,

Library.INSTANCE.RegisterCallback(hMod, hCLL, eventCallbackFunction);

eventCallbackFunction 看起来像这样,

public interface EventCallbackInterface extends Callback {

public void callback(int eventType, int hMod,  int hCll, Pointer clltag, Pointer apiTag);

}

    public class Bridge{
public static EventCallbackInterface eventCallbackFunction = new EventCallbackInterface(){

    public void callback(int eventType, int hMod,  int hCll, Pointer clltag, Pointer apiTag) { System.out.println("Into the callback function: ");}

} }

我没有看到任何崩溃,但即使 DLL 识别出正确的事件,它也无法正常工作。有人可以在这方面帮助我吗?提前谢谢了 !

4

0 回答 0