zoukankan      html  css  js  c++  java
  • 利用VC++6.0实现JNI的最简单的例子

    最近项目中设计到JNI的技术,对于VC++我是一知半解.JNI是知道和Native方法的接口,从来没用过.但是摸了一会,还是感觉有点门路,搞定了JNI的难题以后,对于自己这点小小的进步不敢隐瞒,公开出来给还不了解的兄弟们作个参考.

    Java中使用JNI调用DLL
    1 编写范例文档
    public class TestNative{
      
      private native int add(int x,int y);
      
      public static void main(String[] args) {
        TestNative hh = new TestNative();
        int r = hh.add(30,20);
        System.out.println("result = "+r);
      }

      static {
        System.loadLibrary("DLL_0305");
      }
    }
    其中
    LoadLibrary中的DLL文件名称可以随便定.只要做好的动态链接库改名成这个字符串就可以了.而native函数的来源就是该动态链接库.
    2. 做好该步准备以后,用javac TestNative.java生成.class.检验语法.
    3. 语法检查通过以后,用javah TestNative生成.h的C头文件.
    4. 打开VC++6.0,新建-> 工程 -> win32 Dynamic-Link Library .在向导中选择空工程.
    5. 把刚才javah生成的那个头文件加入工程 .然后 文件->新建->textFile 自己做一个.c文件.实现自己的native函数.清单如下:

    #include<jni.h>

    JNIEXPORT jint JNICALL Java_TestNative_add
      (JNIEnv *ev, jobject obj, jint x, jint y)
    {
    return x+y;
    }
    备注:
    A  其中的jni.h通常在 jdk\include\ 可以先拷贝到VC安装目录下的include目录下.一劳永逸,以后可以方便使用JNI技术.
    B  全部的数据类型需要考虑Java和VC的接口问题.用jint  jstring 等.
    C  函数名称和自动生成的.h文件中规定的一致.命名规则是: Java_使用类_方法名 
    6 全编译一下工程.
      如果没有出错,则此时生成动态链接库成功.
      把动态链接库拷贝到TestNative.java所在的目录上.
    7 运行java TestNative看结果吧.
  • 相关阅读:
    Binary Tree Inorder Traversal
    Populating Next Right Pointers in Each Node
    Minimum Depth of Binary Tree
    Majority Element
    Excel Sheet Column Number
    Reverse Bits
    Happy Number
    House Robber
    Remove Linked List Elements
    Contains Duplicate
  • 原文地址:https://www.cnblogs.com/huqingyu/p/201925.html
Copyright © 2011-2022 走看看