zoukankan      html  css  js  c++  java
  • Windows下JNI执行步骤

    问题描述:

        java JNI使用

    问题解决:

    clipboard

    JNI编写步骤:

    (1)编写带有native声明的方法的java类

        (2)使用javac编译所写的java类,然后使用javah生成扩展名为.h的文件

        (3)使用C/C++实现本地方法

        (4)将C/C++编写的文件生成动态链接库

    具体实践:

        (1)编写带有native方法的java类

    clipboard

    注:

    声明native方法:如果你想将一个方法做为一个本地方法的话,那么你就必须声明该方法为native的,并且不能实现。

    Load动态库:System.loadLibrary("hello");------加载动态库(我们可以这样理解:我们的方法 display()没有实现,但是我们在下面就直接使用了,所以必须在使用之前对它进行初始化)这里一般是以static块进行加载的。同时需要注意的是System.loadLibrary();的参数“hello”是动态库的名字。

        (2)使用javac编译所写java类

    clipboard

    注:

        使用Eclipse编写的项目,在自动保存之后,系统自动会在项目的bin目录下生成包文件和.class文件

        (3)使用javah生成 .h 的头文件

    clipboard

    注:

        以上显示了在DOS下,使用javah生成.h文件的方法,首先转到 项目的bin目录之下,使用命令

    javah   -v    -classpath   .   com.jni.HelloWorld    查看生成 HelloWorld.h 文件的过程,

    其中参数 -v 是显示详细信息的命令。 -classpath 用来加载类的路径

    命令中 -v  可以省略,但是-classpath不能少,-classpath之后的   .    也不可少,com.jni.HelloWorld表示的是comjniHelloWorld.class 文件 

    clipboard

    注:

        以上显示了javah命令的使用方法

    clipboard

    注:

        以上显示了javah 命令生成 HelloWorld.h文件的位置

    clipboard

    注:

        以上是javah命令生成 HelloWorld.h文件的内容

        (3)使用C/C++实现native方法

    clipboard

        (4)生成dll文件

    clipboard

    注:

        详细生成dll文件的解释,参考《JNI中cl命令生成DLL文件》

    (5)项目执行

        将生成的hello.dll文件放置在C:WindowsSystem32 目录之下

    clipboard

    注:

        C:WindowsSystem32是java可以访问到的路径

    clipboard

    注:

        成功访问到DLL文件

  • 相关阅读:
    C# 实现 Snowflake算法生成唯一性Id
    kafka可视化客户端工具(Kafka Tool)的基本使用(转)
    docker 安装kafka
    Model类代码生成器
    使用docker 部署rabbitmq 镜像
    Vue 增删改查 demo
    git 提交代码到库
    Android ble蓝牙问题
    mac 配置 ssh 到git (Could not resolve hostname github.com, Failed to connect to github.com port 443 Operation timed out)
    okhttp
  • 原文地址:https://www.cnblogs.com/luosongchao/p/3220330.html
Copyright © 2011-2022 走看看