Java調(diào)用Delphi開發(fā)的Dll小結.doc

Java調(diào)用Delphi開發(fā)的Dll小結.doc

ID:53872097

大?。?9.50 KB

頁數(shù):3頁

時間:2020-04-10

Java調(diào)用Delphi開發(fā)的Dll小結.doc_第1頁
Java調(diào)用Delphi開發(fā)的Dll小結.doc_第2頁
Java調(diào)用Delphi開發(fā)的Dll小結.doc_第3頁
資源描述:

《Java調(diào)用Delphi開發(fā)的Dll小結.doc》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。

1、由于工作原因需要在JAVA開發(fā)的項目中調(diào)用DELPHI開發(fā)的dll動態(tài)庫,查詢了很多資料總結出方法有以下幾種:1、通過JNI調(diào)用,這種方式如果調(diào)用C/C++開發(fā)的dll動態(tài)庫文件沒有什么問題.但是問題是庫是用DELPHI生成的,用JNI不能直接訪問,所以只能用C封裝DELPHI的庫供JNI訪問,但是這樣很麻煩,而且雙層封裝不穩(wěn)定;又或者在使用DELPHI開發(fā)dll時引用一個jni.pas的接口單元,按照JNI的方式編寫生成dll這樣才可以調(diào)用。下面我舉例說明一下怎樣在使用DELPHI開發(fā)可供JAVA的J

2、NI直接調(diào)用的dll:首先用DELPHI新建一個dll工程testDll.dpr;之后我們需要下載jni.pas加入到我們的工程中,這是國外的高手寫的程序單元,它方便我們的Delphi程序與JAVA交互。解壓之后里面有兩個文件,將其存放在工程的目錄下;接下來我們編寫Delphi代碼:librarytestDll;//這里設置動態(tài)鏈接庫的名稱,因為我們剛才寫JAVA類時是用testDll,所以這里了要設置為testDll:UsesJNI;//注意了,我們剛才下載了JNI.pas放在工程目錄中,這里要在Us

3、es里面聲明,才能使用.//下面我們來寫一個函數(shù),就是為剛才JAVA類實現(xiàn)一個簡單的方法//因為要讓JAVA能夠調(diào)用到這個函數(shù),所以這個函數(shù)的命名是非常講究的,名稱各段的分隔符是_下劃線//本例的函數(shù)如下:即Java_包名_類名_類中的方法名//函數(shù)必須設置為stdcallprocedureJava_myPackage_HelloWorld_printText(PEnv:PJNIEnv;Obj:JObject);stdcall;begin//函數(shù)體非常簡單,因為我們只是了解一下如何調(diào)用Delphi的函數(shù)

4、.Writeln('Hello,ThisisaTest!');end;exportsJava_alvinJNI_HelloWorld_printText;//為函數(shù)做引出聲明,這樣才能真正的被調(diào)用到end.代碼完成,我們Ctrl+F9編譯DLL,生成testDll.dll后,我們把他復制到Java工程目錄;在JAVA工程中新建一個包名myPackage類名HelloWorld的類:packagemyPackage;classHelloWorld{static{System.loadLibrary("te

5、stDll");//這里testDll.dll就是要調(diào)用的DELPHI編寫的動態(tài)鏈接庫文件,先在靜態(tài)語句塊中加載它}publicnativevoidprintText();//聲明一個native的本地代碼程序,這個方法我們在DELPHI里實現(xiàn)。publicstaticvoidmain(String[]args){//創(chuàng)建對象并調(diào)用里面的native方法.HelloWorldhw=newHelloWorld();hw.printText();}}編譯執(zhí)行后,可以看到屏幕打印出:Hello,Thisisa

6、Test!的字樣,說明調(diào)用成功!1、通過JNA第三方的JAVA開發(fā)組件實現(xiàn),這種方法調(diào)用過程簡單實用,而且DELPHI開發(fā)dll時不用增加特殊的jni接口,推薦使用:同樣,首先用DELPHI新建一個dll工程testDll.dpr,這里就不需要jni.pas了;librarytestdll;usesSysUtils,Classes;{$R*.res}procedureHello();stdcall;beginWriteln('Hello');end;exportsHello;end.在JAVA工程里新建

7、一個類Hello.java,然后引入一個jna.jar的包這個可以在網(wǎng)上下載:importcom.sun.jna.Library;importcom.sun.jna.Native;publicclassHello{publicinterfaceCLibraryextendsLibrary{CLibraryINSTANCE=(CLibrary)Native.loadLibrary("testDll",CLibrary.class);//引入庫文件publicvoidHello();//聲明方法}publi

8、cstaticvoidmain(String[]args){CLibrary.INSTANCE.Hello();//調(diào)用}}編譯執(zhí)行后,可以看到屏幕打印出:Hello,ThisisaTest!的字樣,是不是很方便?詳細的JNA的API幫助文檔可以在網(wǎng)上下載到。1、還有人提出用Jnative可以直接訪問DELPHI的dll庫,這個我沒有去深入了,有興趣大家可以自己研究研究。

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。