zoukankan      html  css  js  c++  java
  • Java JNI

    测试JNI的使用方法

    环境准备

    开发环境需要Java SDK(官网下载),下载完后安装Java SDK。

    编译使用的MinGW,64位的官网可以找到下载地址

    项目建立及代码编写

    在任意地方新建一个目录,保存这个项目,然后新建一个src目录,用于存放源文件。因为Java有包的概念,所以进入src目录后,根据包名的层次,依次建立相应目录,然后新建Java源程序文件,比如:

     1 package test.jni;
     2 
     3 public class JniTest {
     4   
     5   public native void callme();
     6   
     7   public static void main(String[] args) {
     8     System.out.println("test jni");
     9     new JniTest().callme();
    10   }
    11 
    12   static {
    13     System.loadLibrary("jt");
    14   }
    15 }

    编译Java代码,生成class文件。然后使用javah工具生成c语言头文件,命令如下:

    javah test.jni.JniTest

    这时目录下会生成一个以包名命名的.h文件,接下来新建一个c源程序jni.c,内容如下:

    1 #include "jni.h"
    2 #include "test_jni_JniTest.h"
    3 
    4 JNIEXPORT void JNICALL Java_test_jni_JniTest_callme
    5   (JNIEnv *jEnv, jobject o)
    6 {
    7   printf("from c
    ");
    8 }

    编译动态链接库

    c源程序里引用了JDK里的一个头文件jni.h,在JDK安装目录下的include目录里,jni.h里引用了另一JDK头文件jni_md.h,在include目录的win32目录里,所以编译时加上这两个搜索地址

    gcc -Wall -shared -I"D:Program FilesJavajdk1.8.0_91include" -I"D:Program FilesJavajdk1.8.0_91includewin32" -o jt.dll jni.c

    这时,项目目录下就会生成一个jt.dll文件

    运行结果

    下面就可以执行class文件,查看结果了。

    java test.jni.JniTest

    正常情况下,会在控制台输出

    test jni
    from c

  • 相关阅读:
    oc基础-oc之集合NSDictionary,NSMutableDictionary
    Pythonic是什么?
    Python 单例模式
    开通博客第一天
    webstrorm快捷键整理
    Javascript设计模式(一)
    遍历json创建树状表(首先的前提条件是要引入jquery的jquery treeTable插件)
    关于高性能javascript 笔记
    css animation 动画的制作
    canvas画扇形图(本文来自于http://jo2.org/html5-canvas-sector/)
  • 原文地址:https://www.cnblogs.com/leoparadox/p/5580384.html
Copyright © 2011-2022 走看看