java调用dll文件需要使用回调函数作为公开函数的参数时,用以下方法实现:

首先,看c++中定义的dll公开函数:

typedef void (*ccback)(char *name ,int length);
int dllFunction(char *ip, int port, ccback cc);

引用dll文件方法不再赘述,直接看回调函数的实现,需要通过java的接口实现:

import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Callback;
import com.test.DllCallBackTest.JnaCallBackDll.SCBack_Impl; public class DllCallBackTest { public interface JnaCallBackDll extends Library { public static JnaCallBackDll instance = (JnaCallBackDll) Native.loadLibrary("src/main/resources/Dll2.dll",
JnaCallBackDll.class); int dllFunction(String host, int port, Callback callback); public interface SCBack extends Callback {
public void MessageHandle(String name, int length);
} public static class SCBack_Impl implements SCBack {
public void MessageHandle(String name, int length) {
// TODO Auto-generated method stub
System.out.println("回调成功!");
// 此处添加需要的数据处理操作
}
}
} public static void main(String[] args) { DllCallBackTest.JnaCallBackDll.SCBack callback = new SCBack_Impl(); JnaCallBackDll.instance.dllFunction("127.0.0.1", 1234, callback);
} }

参照:

https://blog.csdn.net/qdqht2009/article/details/50592192

https://www.jb51.net/article/126546.htm

https://blog.csdn.net/qq_31997407/article/details/78247076?locationNum=8&fps=1

Java JNA (二)—— dll回调函数实现的更多相关文章

  1. node.js学习笔记(二)——回调函数

    Node.js 异步编程的直接体现就是回调. 那什么是回调呢?回调指的是将一个函数作为参数传递给另一个函数,并且通常在第一个函数完成后被调用.需要指明的是,回调函数不是由该函数的实现方直接调用,而是在 ...

  2. 在Java中如何编写回调函数,以及回调函数的简单应用

    import static java.lang.System.out; import static java.lang.System.err; import java.util.logging.Lev ...

  3. c# 传入c++dll 回调函数输出byte 导致 bug

  4. java中回调函数的理解

    一,案例一 "通常大家说的回调函数一般就是按照别人(李四)的定好的接口规范写,等待别人(张三)调用的函数,在C语言中,回调函数通常通过函数指针来传递:在Java中,通常就是编写另外一个类或类 ...

  5. PHP回调函数及匿名函数概念与用法详解

    1.回调函数 PHP的回调函数其实和C.Java等语言的回调函数的作用是一模一样的,都是在主线程执行的过程中,突然跳去执行设置的回调函数: 回调函数执行完毕之后,再回到主线程处理接下来的流程 而在ph ...

  6. Hbase之使用回调函数进行批处理操作

    import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; impo ...

  7. C++中类成员函数作为回调函数

    注:与tr1::function对象结合使用,能获得更好的效果,详情见http://blog.csdn.net/this_capslock/article/details/38564719 回调函数是 ...

  8. JavaScript学习-5——异步同步、回调函数

    ----------异步同步函数 ----------回调函数 一.异步同步函数 同步:发送一个请求,等待返回,然后再发送下一个请求 异步:发送一个请求,不等待返回,随时可以再发送下一个请求 同步可以 ...

  9. C++中 线程函数为静态函数 及 类成员函数作为回调函数

    线程函数为静态函数: 线程控制函数和是不是静态函数没关系,静态函数是在构造中分配的地址空间,只有在析构时才释放也就是全局的东西,不管线程是否运行,静态函数的地址是不变的,并不在线程堆栈中static只 ...

随机推荐

  1. bzoj4009 [HNOI2015]接水果 整体二分+扫描线+树状数组+dfs序

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4009 题解 考虑怎样的情况就会有一个链覆盖另一个链. 设被覆盖的链为 \(a - b\),覆盖 ...

  2. 5.Docker存储卷

    一.概述 1.Docker底层存储机制 Docker镜像由多个只读层叠加而成,启动容器时,Docker会加载只读镜像层并在镜像栈顶部添加一个读写层. 如果运行中的容器修改了现有的一个已经存在的文件,那 ...

  3. 修改linux的mysql用户名和密码

    MySQL数据库密码忘记之后,可以进入linux下修改原始密码,步骤为下.第一步:登陆服务器管理员权限.第二步:进入MySQL数据配置文件 [root@VM_0_8_centos ~]# vi /et ...

  4. navicat连接客户端报错

    怎么感觉oracle和sql server是一个货色.装个服务得装半天,还是mysql好,一下子就好了!下面有一个在centos7上面安装oracle11g的详细步骤,感觉找不到比这个更详细的了吧! ...

  5. [洛谷P3145] CQOI2009 循环赛

    问题描述 n队伍比赛,每两支队伍比赛一次,平1胜3负0. 给出队伍的最终得分,求多少种可能的分数表. 输入格式 第一行包含一个正整数n,队伍的个数.第二行包含n个非负整数,即每支队伍的得分. 输出格式 ...

  6. Dubbo学习-3-管理控制台搭建

    dubbo 2.6.x 的dubbo-admin管理控制台搭建 1.下载源码:https://github.com/apache/incubator-dubbo-ops 打开后切换到master分支 ...

  7. ht-1 jdk calendar类

    package calendardemo; import java.util.Calendar; public class CalendarDemo { /** * @param args */ pu ...

  8. asp.net选择文件夹上传

    HTML部分 <%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="index.aspx. ...

  9. ASP 转换HTML特殊字符

    Function HtmlDecode(ByVal s) If Has(s) Then s = regReplace(s, "<br\s*/?\s*>", vbCrLf ...

  10. Power Strings POJ - 2406

    Power Strings POJ - 2406 时限: 3000MS   内存: 65536KB   64位IO格式: %I64d & %I64u 提交 状态 已开启划词翻译 问题描述 Gi ...