JNA回调函数问题

bodybo 2013-12-18 11:43:24
Java调用C++写的dll,dll内部也回调Java的函数。(使用JNA
功能已实现,但回调有个问题:dll回调Java函数若干次后就回调不成功了!(dll内部执行是没问题的)

回调函数很简单:
typedef void (__stdcall *InterfaceCallback)(int data);


Java这端的定义:
public interface CTP2JAVADLL extends StdCallLibrary {  
public interface ICallback extends StdCallCallback {
void FnCallBack(int data);
}

public void RegisterCallback(ICallback callback);
...
}


Java这端继承的是StdCallLibrary和StdCallCallback。怀疑JNA回调机制有问题,还是我使用有疏忽的地方?

请高人帮帮忙,谢谢了!
...全文
163 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
bodybo 2013-12-18
  • 打赏
  • 举报
回复
自己解决了,原因是调用RegisterCallback注册回调函数时直接new的接口实例,没有定义一个接口变量来保存回调函数句柄,造成回调函数句柄被回收了(猜想)

50,549

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧