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

              static {// 動態(tài)庫名稱為 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、根據(jù) CheckFile 自動生成 C ++ 頭文件 testnative_CheckFile.h
          > javah -classpath . -jni testnative.CheckFile

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

          4、編譯 C ++ 程序為動態(tài)鏈接庫 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 文件后,再生成動態(tài)鏈接庫 test.dll
          > g++ -shared -Wl,--kill-at -o test.dll CheckFile.o

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

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


          網(wǎng)站導(dǎo)航:
           
          人人游戲網(wǎng) 軟件開發(fā)網(wǎng) 貨運專家
          主站蜘蛛池模板: 九龙城区| 兰州市| 和田市| 灵川县| 根河市| 巴林右旗| 屯留县| 株洲市| 赤水市| 仁布县| 三原县| 河池市| 鲁山县| 湖口县| 郯城县| 二连浩特市| 马公市| 宾阳县| 伊金霍洛旗| 肃宁县| 怀集县| 扶余县| 临城县| 佳木斯市| 府谷县| 罗田县| 宜丰县| 卢龙县| 金秀| 山东省| 区。| 如东县| 蒙山县| 育儿| 瑞安市| 岳西县| 钦州市| 若尔盖县| 环江| 双江| 临夏市|