我正在尝试使用 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 识别出正确的事件,它也无法正常工作。有人可以在这方面帮助我吗?提前谢谢了 !