您的位置:首页 > 编程语言 > Java开发

JNI技术

2009-10-30 13:02 29 查看
  这是我转的一篇好文  
   
  最近项目中设计到JNI的技术,对于VC++我是一知半解.JNI是知道和Native方法的接口,从来  
  没用过.但是摸了一会,还是感觉有点门路,搞定了JNI的难题以后,对于自己这点小小的进步  
  不敢隐瞒,公开出来给还不了解的兄弟们作个参考.    
   
   
  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看结果吧.  

 

 

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");
}
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jni java dll string library class