posts - 241,  comments - 116,  trackbacks - 0
          Java 程序可以“一次編寫,到處運行”,原因是它運行在 Ja va 虛擬機上。
          正是由于這個原因,它的執行效率也會相應打些折扣,特別是一些與操作系統連接比較緊密的操作。
          所以 Java  也提供了本地接口,以便直接調用其它更高效的程序接口,例如 C 、C ++ 等等。
          MinGW 是一個運行在 Windows 平臺的 C 、C ++ 編譯器,支持 Make 、Gdb 等類似 Linux 環境下 GCC 的功能。
          下面演示一下用 MinGW 將 C 程序編譯成動態鏈接庫,再使用 Java 的本地方法調用 C 程序中的函數。TP-LINK路由器帶MODEM功能嗎
          1、創建 Java 類文件并聲明本地接口
          package testnative; //未定義包名會調用時會出現 java.lang.UnsatisfiedLinkError
          public class CheckFile {

              static {// 動態庫名稱為 test.dll
                  System.loadLibrary("test");
              }
              // 本地方法名稱
              public native void printHello();
              
              public static void main(String[] args) {
                  try {// 測試運行
                      new CheckFile().printHello();
                  } catch (Exception e) {
                      e.printStackTrace();
                  }
              }
          }
          2、根據 CheckFile 自動生成 C ++ 頭文件 testnative_CheckFile.h
          > javah -classpath . -jni testnative.CheckFile

          3、根據頭文件 testnative_CheckFile.h 編寫 C ++ 程序

          4、編譯 C ++ 程序為動態鏈接庫 test.dll
          注意 JDK 的路徑
          > g++ -ID:\tools\jdk1.6.0_16\include -ID:\tools\jdk1.6.0_16\include\win32 -fPIC -Wall -g -c CheckFile.cpp

          生成 CheckFile.o 文件后,再生成動態鏈接庫 test.dll
          > g++ -shared -Wl,--kill-at -o test.dll CheckFile.o

          5、測試執行
          > java -Djava.library.path=. -cp . testnative.CheckFile
          posted on 2011-06-14 10:35 墻頭草 閱讀(327) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          人人游戲網 軟件開發網 貨運專家
          主站蜘蛛池模板: 商都县| 景泰县| 乌海市| 克山县| 阿拉善左旗| 秦皇岛市| 大关县| 武安市| 宿迁市| 三明市| 鄱阳县| 桐梓县| 黄大仙区| 永靖县| 体育| 睢宁县| 鹿邑县| 南华县| 津市市| 梁河县| 浏阳市| 晋江市| 佳木斯市| 中卫市| 东兴市| 吉林省| 溧水县| 吴忠市| 桐乡市| 五峰| 资兴市| 深水埗区| 青岛市| 略阳县| 和林格尔县| 万州区| 临猗县| 虞城县| 武功县| 青龙| 苗栗县|