sponsored links

java能调用dll中的构造方法

如题,介绍一下java如保调用dll中的构造方法,其实本质上就是在java上如何调用本地库的一种方式

工具/原料

  • java

方法/步骤

  1. 1、JNative

    是一个jar包,对JNI进行了封装,可以允许java访问本地dll/so库的方法,可以百度搜索下载

    java能调用dll中的构造方法
    java能调用dll中的构造方法
  2. 2、JNA

    JNA是目前来说,最简单的一种调用方法,JNI是Java调用原生函数的唯一机制,JNA就是建立在JNI之上,JNA简化了Java调用原生函数的过程,可以百度搜索下载

    java能调用dll中的构造方法
  3. 3、JNI

    最底层的实现方式,也是最麻烦的一种方式,令很多初学者头痛,但是了解jni的实现方式,有助于了解其它两种方式的实现过程,有兴趣的可以深入了解下

    java能调用dll中的构造方法
  4. 4、JNA的简单的实现方法

    import com.sun.jna.Library;import com.sun.jna.Native;public class JnaTest { ? ?//继承Library,用于加载库文件 ? ?public interface Clibrary extends Library{ ? ? ? ?//加载libhello.so链接库 ? ? ? ?Clibrary INSTANTCE = (Clibrary) Native.loadLibrary("hello", Clibrary.class); ? ? ? ?//此方法为链接库中的方法 ? ? ? ?void test(); ? ?} ? ?public static void main(String[] args) {//调用 ? ? ? ?Clibrary.INSTANTCE.test(); ? ?}}

    java能调用dll中的构造方法
  5. 5、JNI的简单的实现方法,新建一个android工程,目录如下图所示

    java能调用dll中的构造方法
    java能调用dll中的构造方法
  6. 6、JNI代码如下图所示

    #include

    #include

    extern "C"

    JNIEXPORT jstring JNICALL Java_com_wind_myapplication_MainActivity_stringFromJNI(

    JNIEnv* env,

    jobject /* this */) {

    std::string hello = "Hello from C++";

    return env->NewStringUTF(hello.c_str());

    }

    简单说一下,JNI的通信原理,主要是建立工程的时候,添加一个c或者c++的文件,里面添加本地函数,比如要调用dll的构造函数的功能,也是一样,主要是要注意方法名的写法,如

    extern "C"

    JNIEXPORT jstring JNICALL Java_com_wind_myapplication_MainActivity_stringFromJNI

    这个是有要求的,不能乱写,其实就是java的包名组成方法名就可以了,然后在java对应的类里,添加一个本地方法与该名称对应,然后加载这个DLL/so就可以了,在java方法里调用这个本地方法就会映射到jni里的方法了

    java能调用dll中的构造方法
    java能调用dll中的构造方法
    java能调用dll中的构造方法

注意事项

  • 仅供个人学习参考,感谢阅读本经验,祝您生活愉快
精选 好文 推荐
  • qq飞车针尖怎么改
    qq飞车针尖怎么改
  • 如何写帖子?如何在百度贴吧发布帖子?
    如何写帖子?如何在百度贴吧发布帖子?
  • 设置电脑 休眠时间
    设置电脑 休眠时间
  • 织梦关键词维护
    织梦关键词维护
  • 如何使用CocoaPods,使用说明
    如何使用CocoaPods,使用说明
  • 在校园里如何拍摄嘉兴婚纱照
    在校园里如何拍摄嘉兴婚纱照
  • 会声会影如何给视频添加音乐
    会声会影如何给视频添加音乐
  • 怎样喝茶最健康
    怎样喝茶最健康
  • 行星齿轮减速机如何选型与注意哪些问题?
    行星齿轮减速机如何选型与注意哪些问题?
  • DIY“印花鸡蛋”
    DIY“印花鸡蛋”
  • 精美的照片墙
    精美的照片墙
  • 新手如何学习开车?
    新手如何学习开车?
  • 如何将windows7系统笔记本竖屏变成横屏
    如何将windows7系统笔记本竖屏变成横屏
  • Win10清空回收站误删后怎么找回:非数据恢复软件
    Win10清空回收站误删后怎么找回:非数据恢复软件
  • 考研英语学习规划
    考研英语学习规划
  • 如何记医学知识最有效。
    如何记医学知识最有效。
  • 手机无法识别sim卡怎么办?
    手机无法识别sim卡怎么办?
  • 最便宜的庐山公交旅游
    最便宜的庐山公交旅游
  • 女人如何看脸色了解肾脏?
    女人如何看脸色了解肾脏?
  • 天猫分期付款怎么还款
    天猫分期付款怎么还款
  • 安装通的供应商如何发布商品
    安装通的供应商如何发布商品
  • 大表远传、水表远传监控系统
    大表远传、水表远传监控系统
  • AI家具设计制作
    AI家具设计制作
  • Win10系统NVIDIA显卡自动启动如何设置
    Win10系统NVIDIA显卡自动启动如何设置
  • 新郎如何根据肤色选礼服
    新郎如何根据肤色选礼服
  • 结婚礼物,结婚礼物送什么好
    结婚礼物,结婚礼物送什么好
  • Google Chrome如何设置自动解除阻止插件运行
    Google Chrome如何设置自动解除阻止插件运行
DNF90版剑魂/白手/剑神异界套选择推荐?