Java中JNI的使用

其主要过程如下:

1.编写Java代码
2.编译代码生成字节码文件
3.利用字节码文件生成C/C++头文件
4.新建VC项目
5.在项目中引入生成的头文件以及jni.h,jni_md.h
6.建立C/C++应用 .cpp文件
7.在该文件中用#include 引入生成的头文件
8.用C代码实现本地方法
9.生成dll文件
10.执行Java程序

具体操作过程:

1.Java代码:

  
  
  
  
  1. package com.pinus.util; 
  2.  
  3. public class Show { 
  4.     static { 
  5.         System.loadLibrary("Show"); 
  6.     } 
  7.  
  8.     /** 
  9.      * 弹出提示对话框 
  10.      *  
  11.      * @param message 
  12.      *            对话框的消息 
  13.      * @param title 
  14.      *            对话框的标题 
  15.      */ 
  16.     public native void showDialog(String message, String title); 
  17.  
  18.     public static void main(String[] args) { 
  19.         new Show().showDialog("Welcome to java Programing !""JavaTar"); 
  20.     } 

2.编译源代码:

3.生成头文件:

其内容如下:

  
  
  
  
  1. /* DO NOT EDIT THIS FILE - it is machine generated */ 
  2. #include <jni.h> 
  3. /* Header for class com_pinus_util_Show */ 
  4.  
  5. #ifndef _Included_com_pinus_util_Show 
  6. #define _Included_com_pinus_util_Show 
  7. #ifdef __cplusplus 
  8. extern "C" { 
  9. #endif 
  10. /* 
  11.  * Class:     com_pinus_util_Show 
  12.  * Method:    showDialog 
  13.  * Signature: (Ljava/lang/String;Ljava/lang/String;)V 
  14.  */ 
  15. JNIEXPORT void JNICALL Java_com_pinus_util_Show_showDialog 
  16.   (JNIEnv *, jobject, jstring, jstring); 
  17.  
  18. #ifdef __cplusplus 
  19. #endif 
  20. #endif 

4.新建VC项目:

5.引入头文件:

6.建立C/C++文件

7.引入头文件

8.实现本地方法

其内容如下:

  
  
  
  
  1. #include "include\com_pinus_util_Show.h" 
  2. #include "windows.h" 
  3. JNIEXPORT void JNICALL Java_com_pinus_util_Show_showDialog 
  4.     (JNIEnv* env, jobject, jstring mess, jstring titl){ 
  5.      const jchar* message =(env)->GetStringChars(mess, 0); 
  6.      const jchar* title   =(env)->GetStringChars(titl, 0); 
  7.      MessageBox(NULL,(LPCWSTR)message,(LPCWSTR)title,MB_OK); 
  8.      (env)->ReleaseStringChars( mess, message); 
  9.      (env)->ReleaseStringChars( titl, title); 

9.生成dll文件

10.执行Java程序:

 

你可能感兴趣的:(Java中JNI的使用)