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

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

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

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

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

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


          網(wǎng)站導(dǎo)航:
           
          人人游戲網(wǎng) 軟件開(kāi)發(fā)網(wǎng) 貨運(yùn)專(zhuān)家
          主站蜘蛛池模板: 屏东县| 阜城县| 白玉县| 赤城县| 五家渠市| 万全县| 霍州市| 浑源县| 灌阳县| 浠水县| 漳平市| 余江县| 壶关县| 长阳| 仪陇县| 海南省| 玉山县| 穆棱市| 荃湾区| 红河县| 交口县| 三亚市| 宽城| 济阳县| 罗定市| 石楼县| 绩溪县| 吐鲁番市| 乐平市| 靖安县| 连平县| 晴隆县| 新和县| 和政县| 德令哈市| 中西区| 双柏县| 岳阳市| 漳州市| 七台河市| 陵川县|