JNI原理与使用

本文详细介绍了JNI的工作原理,包括如何在Java中声明本地方法,使用javah生成C接口头文件,以及C代码中如何实现这些方法,与Java进行交互。内容涵盖了JNI函数的创建、对象的创建和方法调用,以及Android NDK如何封装JNI进行本地函数调用。此外,还提到了JNI函数映射的注册机制和环境配置的重要性。
摘要由CSDN通过智能技术生成
1. Java中调用 C库函数
    Java的JDK中包含了一份JNI使用的库文件。
    
    在Java中调用C函数,相当于 Java中声明一个接口,在C中做实现。
    
    1. 首先需要编写Java的源文件,同时在Java类中声明函数,如:
        class HelloJNI
        {
            // 本地方法声明
            native void printString(String);
        }
        
        注:在Java中不存在独立的函数,函数只能作为类的成员方法存在。native表明了这个函数是一个C中实现的接口。
        
    将Java文件进行编译,使用 javah 工具,将类中的本地方法生成一个JNI的C接口头文件(注意必须要用这个头文件)。
    
    2. 将从Java类中生成的头文件作为编译的动态模块(DLL或.so文件)的头文件(之一),将头文件中的函数进行实现。
        从Java类中生成的本地函数的头文件,它的函数声明中,引用了 jni.h 头文件,其中定义了这些函数作为导出函数。
        
        编译生成动态模块
        
    3. 然后运行编译的Java类,java虚拟机加载生成的动态模块,调用模块导出的java类中声明的本地函数。
    
    由javah生成的导出函数头文件函数是有特定格式的,不能修改。例如:
        JN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值