隨筆 - 117  文章 - 72  trackbacks - 0

          聲明:原創作品(標有[原]字樣)轉載時請注明出處,謝謝。

          常用鏈接

          常用設置
          常用軟件
          常用命令
           

          訂閱

          訂閱

          留言簿(7)

          隨筆分類(130)

          隨筆檔案(123)

          搜索

          •  

          積分與排名

          • 積分 - 156395
          • 排名 - 390

          最新評論

          [標題]:JNI簡單示例
          [時間]:2009-4-5
          [摘要]:Java通過JNI調用DLL。
          [關鍵字]:JNI,DLL,動態庫,Java
          [環境]:JDK6 + VC6
          [作者]:Winty (wintys@gmail.com)

          [正文]:
              Java通過JNI調用本地系統的動態庫(Windows上是dll形式,Unix中是so形式的文件)。JNI的簡單步驟如下:

              Step1:編寫Java類,其中包含要實現的native方法。
          JNITest.java:

          public class JNITest{
              static{
                  System.loadLibrary("JNITest");
              }

              public native void showMessageBox();

              public static void main(String[] args){
                  JNITest jni = new JNITest();
                  jni.showMessageBox();
              }
          }
              編譯JNITest.java,命令:"javac JNITest.java",生成JNITest.class。

              Step2:生成頭文件,命令:"javah JNITest",生成頭文件JNITest.h
          JNITest.h:

          /* DO NOT EDIT THIS FILE - it is machine generated */
          #include <jni.h>
          /* Header for class JNITest */

          #ifndef _Included_JNITest
          #define _Included_JNITest
          #ifdef __cplusplus
          extern "C" {
          #endif
          /*
           * Class:     JNITest
           * Method:    showMessageBox
           * Signature: ()V
           */
          JNIEXPORT void JNICALL Java_JNITest_showMessageBox
            (JNIEnv *, jobject);

          #ifdef __cplusplus
          }
          #endif
          #endif
              Step3:編寫相應的實現文件JNITest.cpp(或.c)。
          JNITest.cpp:

          #include "JNITest.h"
          #include <windows.h>

          JNIEXPORT void JNICALL Java_JNITest_showMessageBox
            (JNIEnv *, jobject){
              ::MessageBox(NULL,"This is a JNI test" , "JNI" , MB_OK);
          }
              Step4:將JNITest.cpp編譯成dll,
              命令(cl 是VC6的編譯命令):
          "cl -If:\jdk\include -If:\jdk\include\win32 -LD JNITest.cpp user32.lib -FeJNITest.dll"
              Step5:運行,命令:"java JNITest"。運行后會彈出一個對話框。
          posted on 2009-04-05 21:33 天堂露珠 閱讀(1611) 評論(1)  編輯  收藏 所屬分類: Java

          FeedBack:
          # re: [原]JNI簡單示例 2009-04-09 14:45 genjuro
          不錯啊,收藏了,以后會用到  回復  更多評論
            
          主站蜘蛛池模板: 浏阳市| 洛隆县| 漾濞| 大连市| 嘉峪关市| 青阳县| 侯马市| 新余市| 云龙县| 陇西县| 郯城县| 米易县| 始兴县| 延川县| 天柱县| 博白县| 闵行区| 双江| 织金县| 临沭县| 上杭县| 建湖县| 哈密市| 潮州市| 竹山县| 武川县| 弥勒县| 锦州市| 民乐县| 阳春市| 和龙市| 昌宁县| 伊春市| 百色市| 和田市| 宁武县| 准格尔旗| 剑阁县| 巴青县| 左贡县| 海南省|