JAVA如何调用C/C++动态库

本文详细介绍了JAVA如何通过JNI和JNA调用C/C++动态库。讲解了JNI的步骤,包括生成JNI头文件、创建C++动态库、加载动态库等。同时也提到了JNA的便捷性,以及在x32和x64环境下的注意事项,动态库的位置选择,以及JAVA与C/C++参数类型的对应。文章最后总结了调用动态库的关键点,并强调了文档和配合的重要性。
摘要由CSDN通过智能技术生成

一、调用方式:

JAVA调用C/C++动态库有很多方法,常用的有JNI(Java Native Interface)、JNA(Java Native Access)。

  • JNI:早在JAVA1.1版本就开始支持,它定义了一种公用的语法,当java和c/c++双方都遵循该语法时,可以互相调用。所以使用JNI不能直接调用一般的C/C++库,而必须借助于一个中间动态库,该中间动态库实现了JAVA-JNI语法-C/C++的转换(或者你所调用的动态库原生就封装了JNI)。如果对C++稍微懂一点,其实使用起来也不难。
  • 作者:宋清日
    链接:https://zhuanlan.zhihu.com/p/465601205
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
     

    java通过JNI(Java Native Interface)与其他语言编写的代码进行交互。

    JNI工作示意图(网上下载的)

    Java要调用第三方动态库,通俗点说就是需要将这个第三方动态库按照Java语言的要求再封装一次,变成Java可以调用的新动态库,这个新动态库去调用原始的动态库。

  • 编写带有native声明的方法的Java类,该方法要与真正调用的动态库的方法和参数和返回值均一致。(直接用IDEA新建Java项目)
  • package com.JniDemo;
    
    public class JniDemo {
        static {
            System.load("/root/Jni_Lib/libJniDemo.so");
        }
    
        public native int add(int a, int b);
        public native String print(String msg);
    
        public static void main(String[] args)
        {
            JniDemo demo = new JniDemo();
            demo.print("11");
        }
    }

    2. 编译Java类生成.class文件。(build一下创建的project)

    3. 使用javah生成JNI头文件。

    每次头文件有改动的话,直接用工具重新生成,比较方便。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值