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
我有我語言
主站蜘蛛池模板: 久久久久免费精品国产| 无码国产伊人| 国产Av无码精品色午夜| 精品国产自在现线看久久| 偷拍久久网| 91网在线| 亚洲天天更新| 亚洲综合经典在线一区二区| 亚洲无线视频| 久久黄色视频影| 亚洲浓毛av| 小说区 亚洲 自拍 另类| 91蝌蚪视频在线观看| 久久香蕉国产线看观| 女人18毛片一级毛片在线| 免费午夜无码18禁无码影院| 欧美综合在线观看| 国产无码精品在线播放| 亚洲九九视频| 爱做久久久久久| 国产精品亚洲αv天堂无码| 亚洲国产欧美目韩成人综合| 日韩小视频网站hq| 日本一区中文字幕最新在线| 国产小视频在线高清播放| 欧美亚洲中文精品三区| 国产精品欧美日本韩免费一区二区三区不卡| 成人国产精品2021| 亚洲女同欧美在线| 四虎成人免费毛片| 久久男人资源站| 欧美无专区| 精品自窥自偷在线看| 午夜精品久久久久久久2023| 69综合网| 欧美日韩在线国产| 国产在线精彩视频论坛| 亚洲有无码中文网| 久久伊伊香蕉综合精品| 久久国产免费观看| 亚洲丝袜中文字幕| 国产一区二区网站| 18黑白丝水手服自慰喷水网站| 91破解版在线亚洲| 国产99久久亚洲综合精品西瓜tv| 国产h视频免费观看| 88av在线播放| 一本视频精品中文字幕| 精品亚洲国产成人AV| 国产原创第一页在线观看| 重口调教一区二区视频| 国产午夜不卡| 国产欧美精品专区一区二区| 无码精品国产VA在线观看DVD| 美女免费精品高清毛片在线视| 国产毛片不卡| 中文国产成人精品久久| 成人午夜天| 日本一区二区三区精品视频| 久久美女精品国产精品亚洲| 国产不卡在线看| 亚洲精品va| 高清不卡毛片| 丁香婷婷在线视频| 亚洲综合狠狠| 亚洲中久无码永久在线观看软件 | 国产理论最新国产精品视频| 日韩成人午夜| 在线亚洲小视频| 老司国产精品视频91| 色久综合在线| 免费看a级毛片| 无码 在线 在线| 国产亚洲美日韩AV中文字幕无码成人| 国产精品久久久久久久伊一| 成人在线不卡| 5555国产在线观看| 2020精品极品国产色在线观看| www精品久久| 国产成人综合亚洲网址| 欧美一级特黄aaaaaa在线看片| 国产精品流白浆在线观看|