JNA 使用 回调函数

前言

要在 JNA 里使用 回调函数,首先得定义一个 Library 接口,用这个来调用 dll 中的函数,然后还需要一个 Callback 接口,定义回调函数
Native 层也需要有相应的函数定义,具体看下边代码

C 语言代码

#include<stdio.h>

typedef void (*ccback)(char *name);

void test(ccback cc,char* str){
    cc(str);
    puts("output in c");
}

Java ( Kotlin ) 代码

interface Test : Library {
    companion object {
        val INSTANCE: Test = Native.load("a.dll", Test::class.java)
    }

    fun test(callback: LameCallback, str: String)
}

interface LameCallback : Callback {
    fun test(str: String)
}

class LameCallbackImpl : LameCallback {
    override fun test(str: String) {
        println(str)
    }
}

使用方式

image

运行结果

image

posted @ 2021-12-05 11:48  博麗靈夢  阅读(638)  评论(0编辑  收藏  举报