驽马十驾 驽马十驾

驽马十驾,功在不舍

目录
Kotlin 系列:Kotlin调用C/C++的利器--JNA
/    

Kotlin 系列:Kotlin调用C/C++的利器--JNA

前言

JNA的使用比 JNI 更加简单明了,之前我有篇文章:Java调用 C/C++的利器-JNA 讲述了在 Java环境调用 JNI,这里简答记录下 Kotlin下调用 JNI

改动

我们先回顾 下 Java代码

public interface SayLibrary extends Library {

    /////////// 如下为接口 //////////
    /**
     * 根据C提供的接口构造的接口
     *
     * @param val
     * @return
     */
    int increase(int val);


    /////////// 如下为调用入口 ///////////
    /**
     * 需要将C编译的dll 或者so 文件放入Java运行目录。
     */
    SayLibrary LIBRARY = (SayLibrary) Native.loadLibrary("say", SayLibrary.class);
}

改为 kotlin 很简单


interface SayLibrary : Library {

    fun increase(`val`: Int): Int

    companion object {
        //直接加载
        val LIBRARY = Native.loadLibrary("say", SayLibrary::class.java) as SayLibrary
    
        //懒加载的方式
        val INSTANCE by lazy { Native.load("waynav", SayLibrary::class.java)  as SayLibrary}
    }
}

结语

Kotlin在编译后,同 Java没有区别,所以 Java能做的事情 Kotlin 肯定能做。

反过来就不行了噢。