隨筆 - 117  文章 - 72  trackbacks - 0

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

          常用鏈接

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

          訂閱

          訂閱

          留言簿(7)

          隨筆分類(130)

          隨筆檔案(123)

          搜索

          •  

          積分與排名

          • 積分 - 155504
          • 排名 - 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 天堂露珠 閱讀(1607) 評論(1)  編輯  收藏 所屬分類: Java

          FeedBack:
          # re: [原]JNI簡單示例 2009-04-09 14:45 genjuro
          不錯啊,收藏了,以后會用到  回復  更多評論
            
          主站蜘蛛池模板: 靖安县| 惠水县| 乌苏市| 同仁县| 彰武县| 广南县| 克拉玛依市| 新龙县| 玛多县| 永胜县| 拉萨市| 云林县| 保亭| 金堂县| 望城县| 平顶山市| 许昌市| 三门县| 武山县| 金山区| 喀喇| 定陶县| 元江| 杭州市| 花垣县| SHOW| 德清县| 赫章县| 宜川县| 基隆市| 台东市| 昌平区| 哈巴河县| 邯郸市| 哈尔滨市| 内乡县| 鲁山县| 鄂伦春自治旗| 胶南市| 峡江县| 额尔古纳市|