我正在尝试使用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识别出正确的事件,但我没有看到任何崩溃,但它根本不起作用。有人可以帮我这方面吗? 非常感谢提前!