999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Java程序調用VC++中的DLL的研究與應用*

2014-07-25 07:44:02孫文華
網絡安全與數據管理 2014年6期
關鍵詞:程序語言

孫文華,劉 平

(南昌工程學院 信息工程學院,江西 南昌 330099)

雖然Java和VC++是當前兩大主流的編程語言,但是如果兩者之間不能有效結合,實現相互調用的話,勢必會給編程人員的工作帶來諸多不便,增加許多的重復工作,甚至有可能造成整個項目的擱淺。另外,不同語言之間的互相調用還可以有效地利用現有程序,并且不需要一遍一遍地撰寫類似的程序代碼。為此,本文引人了VC++中的動態鏈接庫文件,通過實例闡述了如何在Java中成功調用VC++動態鏈接庫的問題[1]。

1 技術介紹

1.1 動態鏈接庫DLL

動態鏈接庫DLL好比一個封裝起來的 “倉庫”,DLL是Dynamic Link Library的縮寫,其中封裝了一些或者部分可以被共享的例程和資源,采用動態的連接方式就能夠被其他程序動態裝載、運行以完成某些特定的功能。

采用動態鏈接庫進行軟件開發,具體優勢主要有下面幾點:

(1)對硬件資源方面的要求比較小

在程序開發過程中,經常遇到多個程序調用同一個函數庫的情況,這時如果使用動態鏈接庫,就可以大大減少在磁盤和物理內存中重復代碼的加載。只有當生成的EXE文件確實要調用該DLL模塊時,系統才會將其加載到內存空間中去。

(2)項目體系結構模塊化開發

程序結構模塊化對項目開發有著重要的作用,能夠方便項目的管理與功能的定制。動態鏈接庫的設計包含這種思想。另外,動態鏈接庫支持多語言。這樣可以有更廣闊的應用平臺,方便開發程序的移植,也可以在不同的開發平臺上調用。通常當開發的系統為龐大系統,避免不了有許多重復類型的功能,這時如果將這些類似的功能單獨做成DLL,將可以大大減少開發的工作量和提高開發的速度[2]。

(3)軟件維護方便

當動態鏈接庫中的函數需要更新或修復時,采用動態鏈接庫更方便。因為部署及安裝動態鏈接庫在此就不要求重新建立程序與該DLL的連接。此外,如果多個程序使用同一個DLL,則多個程序都將從該更新或修復中獲益。當使用定期更新或修復的第三方DLL時,此問題可能會更頻繁地出現,升級到DLL就可以更容易解決這些問題。

(4)功能實現的細節隱藏

考慮到一些重要技術的保密和知識產權的保護,在某些情況下,通常將項目中一些功能實現的具體細節隱藏起來,即希望里面的部分代碼不被公開,這時動態鏈接庫就是一項非常不錯的實現方法。動態鏈接庫可以被其他應用程序訪問調用,但將代碼的具體細節完全隱藏起來。另外,DLL的語言無關性也是很重要的一個方面。正是由于動態鏈接庫DLL與語言無關的這個特點,故用VC++創建的DLL可以被其他任何支持動態鏈接庫的編程語言調用,比如 VB、Delphi、PD[3]等。

1.2 Java本地編程接口JNI

JNI(Java Native Interfacejava)其實就是指 Java本地程序接口,屬于JDK中的一部分。當Java程序中有需要調用通過VC++語言編寫的DLL時,此時最佳選擇就是使用JNI技術。通過使用Java本地接口書寫程序,可以確保代碼在不同的開發平臺上方便移植。JNI使得運行于Java虛擬機的代碼可以操作用C、C++或者匯編等書寫的應用程序或庫,同時也可以通過調用相應的接口函數將Java虛擬機內嵌到本地應用程序中。

特別需要提醒的是,只要有下面幾種情況中的任何一種出現時,程序員就需要利用JNI來進行處理:(1)所開發的應用程序要使用到與平臺相關的屬性,但Java標準類庫不支持對這些屬性的處理;(2)已經擁有了利用其他編程語言實現的應用程序或庫,希望用Java直接調用這些應用程序或庫來實現;(3)程序中的某個模塊對運行的時間效率要求很高,此時希望用比較低級的語言(如匯編)來實現,同時希望在Java應用程序中使用這個模塊[4]。

2 設計與實現

2.1 設計步驟

使用JNI在Java中調用VC++寫的 DLL有以下幾個步驟:(1)創建 Java類;(2)編譯 Java代碼并生成頭文件;(3)開發 DLL并實現方法;(4)編譯動態鏈接庫;(5)測試運行程序。

2.2 設計實例

2.2.1 無包情況

(1)在Java中寫調用VC的代碼,具體如下:

(2)在運行彈出的輸入框中輸入cmd進入dos界面,通過cd命令進入到安裝Java的路徑下面的bin中,假設安裝目錄是 D:Program FilesJavajdk1.6.0_10in,把JieCheng.java文件移到 D:Program FilesJavajdk1.6.0_10in目錄下,輸入 javac JieCheng.java,可以看到在該目錄下生成了JieCheng.class的文件。輸入javah JieCheng生成了JieCheng.h文件。具體如下:

(3)在VC下創建DLL文件,名字一定要是System.load-Library("JieCheng")中的 JieCheng,把 JieCheng.h文件直接復制到該VC文件下,同時把jni.h,jni_md.h復制到VC工程下。在JieCheng.cpp文件下實現在Java中聲明過的方法,注意方法名一定要與JieCheng.h中聲明的方法一致,在方法中寫入代碼如下:

(4)在VC下編譯生成 JieCheng.dll文件,把該文件直接復制到 Java的安裝目錄下面的 bin目錄下:D:Program FilesJavajdk1.6.0_10in。

(5)把在VC下編譯生成的JieCheng.dll文件直接復制到 Java的安裝目錄的 bin目錄下:D:Program FilesJavajdk1.6.0_10in。運行命令:java JieCheng,本例中,JieCheng函數用于求一個數的階乘,所以在屏幕上顯示的結果是“120”。

2.2.2 有包情況

有包的情況與上面介紹的無包情況大致相同。但需要特別強調、引起注意的地方是:首先需要在Java的安裝目錄bin下創建包名文件夾,假設創建的包名文件夾的名稱為NegerVector,然后把.java文件放在此文件夾中。接下來就是進入DOS環境下運行兩個命令,首先運行:javac NegerVectorJieCheng.java; 然后運行:javah Neger Vector.JieCheng。其他的可以參照無包情況了,因為接下來與無包的情況基本相同。

在許多大型項目的開發過程中,從提高開發效率以及實現代碼重用的角度來看,跨平臺服務的開發是未來的發展趨勢,從而經常需要在Java程序中調用VC中的DLL。本文從JNI技術出發,通過簡單的實例詳細闡述了JNI調用VC++寫的DLL的程序,解決了Java與VC的有效結合,實現了它們之間的相互調用。

[1]王志文,夏秦,李平均.Java程序設計(修訂本)[M].西安:西安交通大學出版社,2005.

[2]孫文華.一種基于Java編程的臟字過濾器的設計[J].微型機與應用,2012,31(9):18-19,23.

[3]王敏,邵定宏,陸金桂.動態鏈接庫技術及其應用實[J].微計算機信息,2006,22(27):272-274.

[4]宋曉字,王永會.Visual C++高級編程技術與實例[M].北京:中國水利水電出版社,2006.

猜你喜歡
程序語言
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
讓語言描寫搖曳多姿
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
多向度交往對語言磨蝕的補正之道
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
累積動態分析下的同聲傳譯語言壓縮
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
我有我語言
主站蜘蛛池模板: 蜜桃臀无码内射一区二区三区| 日本道综合一本久久久88| 2020久久国产综合精品swag| 在线色国产| 亚洲无码精彩视频在线观看| 999精品视频在线| 四虎AV麻豆| 成人午夜福利视频| 国产午夜不卡| 99久久99视频| 久久国产精品无码hdav| 亚洲人成色在线观看| 无码AV日韩一二三区| 国产精品无码翘臀在线看纯欲| 成人午夜亚洲影视在线观看| 日本欧美中文字幕精品亚洲| 亚洲视频二| 欧美yw精品日本国产精品| 中文字幕久久波多野结衣| 伊人激情久久综合中文字幕| 亚洲男人天堂2020| 亚洲天堂网视频| 色综合手机在线| 欧美精品亚洲二区| 狠狠亚洲五月天| 97se亚洲综合| 久久夜色精品| 91视频青青草| 色丁丁毛片在线观看| 日韩视频免费| 亚洲日韩精品无码专区| 久综合日韩| 欧美精品成人一区二区在线观看| 重口调教一区二区视频| 国产不卡在线看| 久久永久精品免费视频| 欧美一级高清免费a| 四虎永久在线精品国产免费| 国产第一页第二页| 青青青国产在线播放| 久久精品这里只有国产中文精品| 亚洲综合欧美在线一区在线播放| 亚洲无码高清一区二区| 91久久偷偷做嫩草影院电| 免费a级毛片视频| 日本日韩欧美| 国产高清免费午夜在线视频| 日韩精品高清自在线| 亚洲天堂免费在线视频| 97se综合| 亚洲成人手机在线| 国产乱人伦AV在线A| 白浆免费视频国产精品视频| 国产国产人成免费视频77777| 久久 午夜福利 张柏芝| 中日无码在线观看| 在线看片中文字幕| 真人免费一级毛片一区二区| 亚洲中文无码h在线观看 | 亚洲国产清纯| 国产欧美网站| 亚洲精品成人福利在线电影| 久久成人免费| 国产午夜福利片在线观看| m男亚洲一区中文字幕| 日韩国产精品无码一区二区三区 | 综合成人国产| 亚洲中文字幕日产无码2021| 久久这里只有精品8| 亚洲精品动漫| 国产高清在线精品一区二区三区| AV无码一区二区三区四区| 国产亚洲一区二区三区在线| 久久综合成人| 国产亚洲视频在线观看| 免费又黄又爽又猛大片午夜| 国产亚卅精品无码| 色婷婷在线影院| 亚洲va在线∨a天堂va欧美va| 欧美成人免费一区在线播放| 国产亚洲精| 91九色视频网|