问题描述
Java调用C++写的dll,dll内部也回调Java的函数。(使用JNA)功能已实现,但回调有个问题:dll回调Java函数若干次后就回调不成功了!(dll内部执行是没问题的)回调函数很简单:typedefvoid(__stdcall*InterfaceCallback)(intdata);
Java这端的定义:publicinterfaceCTP2JAVADLLextendsStdCallLibrary{publicinterfaceICallbackextendsStdCallCallback{voidFnCallBack(intdata);}publicvoidRegisterCallback(ICallbackcallback);...}
Java这端继承的是StdCallLibrary和StdCallCallback。怀疑JNA回调机制有问题,还是我使用有疏忽的地方?请高人帮帮忙,谢谢了!
解决方案
本帖最后由 bodybo 于 2013-12-18 12:11:25 编辑
解决方案二:
自己解决了,原因是调用RegisterCallback注册回调函数时直接new的接口实例,没有定义一个接口变量来保存回调函数句柄,造成回调函数句柄被回收了(猜想)
时间: 2025-01-15 04:15:52