Java中的Native方法实现(C++)

 

        对于Java内存机制是一个耳熟能详的内容,对于具体的代码实现和操作却很少提及到。对于理论的学习,个人认为还是需要能够在实际中进行操作才可以发现问题,有新的突破,给技术发展带来新的冲击。闲话少说,对于Java内存的Native方法的使用进行具体的介绍。

        平台使用:DevC++软件version5.11,IDEAJ2018.3,Windows10系统下命令操作符

具体需要使用上述软件,各自的下载就不细说了。

 1. [编写类文件]在IDEA中,编写本地的方法类文件,代码如下:

package native_method;


public class NativeMethod {  //类型可以自己任意取
    public native void h(String name);   // 声明为本地方法,其中这个方法不可以用abstract 来修饰。

    static {
        System.loadLibrary("Test");    // 导入动态链接库,就是导入Test.dll 文件
    }

    public static void main(String[] args) {
        new NativeMethod().h("This is a NativeMethoddemo!");
    }
}

 2.  [生成.h文件]在Windows命令操作符中,进入到类的文件中,使用java -h . NativeMethod.java,产生java文件对应的.h文件:

NativeMethod.class

3. [创建DLL项目]在DevC++中,新建一个DLL动态链接库文件,文件的名称务必要和类文件加载的Libraries中的名称一样,此处为Test:

创建DLL文件

4.[修改Test文件目录]刚新建的文件中,会有两个后缀分别为.h和.cpp的文件,首先创建两个文件夹为Sources和Headers,分别用于存储.h头文件和.cpp源文件。同时将系统本省产生的.h文件和.cpp文件删除:

DLL文件目录

5. [添加.h和.cpp]在Headers目录下,右键添加,在文件目录下找到native_method_NativeMethod.h文件。同时在native_method_NativeMethod.h中,有头文件jni.h,将jni.h文件改为其绝对路径。打开jni.h文件,将对应的头文件jni_md.h引入到Headers中,并且将路径改为jni_md.h的绝对路径。如图:

提示:jni.h文件在Java安装路径的include文件下。jni_md.h在Java安装路径的include文件中的Win32文件夹下。

native_method_NativeMethod.h
jni.h

      至此,我已经将所有需要的头文件进行了导入。接下来,将在Sources文件下编写.cpp源文件。

6. [编写.cpp文件]在Sources文件夹下添加.dllmain.cpp文件:

注意,导入的头文件都必须是绝对路径,编写.cpp文件时,主函数的格式需要和native_method_NativeMethod.h重定义的函数一样。

7. [编译]对dllmain.cpp文件进行编译,同时生成Test.dll文件:

8. [拷贝.dll]将Test.dll文件copy到Java工程目录下:

9. [运行.class]成功实现Native方法显示:

OK,到这里,我对于Native在新的领域有了新的认识,探索让技术更有趣~欢迎关注和闲聊~

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值