zoukankan      html  css  js  c++  java
  • JNI Demo实现(基于IEDA,VS2008)

     

    一、简介:

      JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++

    二、步骤概要:

    1. 编写带有native声明的方法的java类
    2. 使用IDE或javac命令编译所编写的java类
    3. 使用javah + java类名生成扩展名为h的头文件
    4. 使用C/C++实现本地方法
    5. 将C/C++编写的文件生成动态连接库(DLL)
    6. ok,搞定,可以运行java程序了

    三、详细步骤:

      以打印Hello world为例,已完成的工程目录:(out是我这边构建项目后生成的,请忽略)

      

      第一步:编写java代码:

     1 public class JNIDemo {
     2     //定义一个方法,该方法在C++中实现
     3     public native void testHello();
     4 
     5     public static void main(String[] args){
     6         //加载C++文件(dll文件)
     7         System.loadLibrary("TestJNI");
     8         JNIDemo jniDemo = new JNIDemo();
     9         jniDemo.testHello();
    10     }
    11 }

      第二步:使用IDEA对java项目进行编译,然后进入java类JNIDemo目录中,使用javah对生成的JNIDemo.class进行处理,生成JNIDemo.h文件,命令如下:

    javah JNIDemo

      第三步:使用vs 2008编写c++方法,如下:

        1.选择文件-》新建-》项目

      

        2.选择 win32项目,输入 名称,然后点击确定

        

        3.后续点击下一步进入下图,选择DLL,这样就创建完成了

      

      第四步:生成项目目录如下:

      

      第五步:在源文件目录上右键,创建一个类:

      

      

      

      第六步:在你的JDK目录的include目录下有一个jni.h的文件,include的win32目录下有个jni_md.h文件,还有java工程的中之前生成的JNIDemo.h文件,一起拷贝到C++工程的TestJNI目录下:

      当前目录为工程目录:

      

      第七步:在头文件目录上右键,添加刚刚复制的.h头文件(jni.h、jni_md.h、JNIDemo.h)

      

      第八步:打开JNIDemo.h,将#include <jni.h>调整为#include "jni.h"

      

      第九步:在TestJNI.cpp添加如下代码:

    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include "jni.h"
    /* Header for class JNIDemo */
    
    #ifndef _Included_JNIDemo
    #define _Included_JNIDemo
    #ifdef __cplusplus
    extern "C" {
    #endif
    /*
     * Class:     JNIDemo
     * Method:    testHello
     * Signature: ()V
     */
    JNIEXPORT void JNICALL Java_JNIDemo_testHello
      (JNIEnv *, jobject);
    
    #ifdef __cplusplus
    }
    #endif
    #endif

      第十步:配置C++工程,在解决方案上右键,选择属性

       

      作如下配置,如果为32位的系统则可以使用win32:

      

      第十一步:在解决方案上右击,生成解决方案

      

      第十二步:在C++项目中可以看到生成的TestJNI.dll文件,在IDEA中点击File->Project Structure...,

      

      

      然后将生成的TestJNI.dll加入到Libraries中

      

      第十三步:右键运行java程序,可以看到执行的结果

      

  • 相关阅读:
    java中并发包简要分析01
    java中的集合包简要分析
    多线程学习——终结任务
    大型高并发高负载网站的系统架构
    An expression evaluator
    java公式解析器学习与开发(2)——前缀表达式
    java公式解析器学习与开发(1)
    程序员遇到bug时常见的30种反应
    图论--SCC强连通缩点--Tarjan
    图论--割边--Tarjan模板
  • 原文地址:https://www.cnblogs.com/aimed/p/10087888.html
Copyright © 2011-2022 走看看