Java 方法對應(yīng) Java 語言的作用 就相當(dāng)于 C 函數(shù) 對應(yīng)于 C 語言的作用,這個應(yīng)該沒有疑問,就算是角色作用相似吧。
成都創(chuàng)新互聯(lián)于2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站制作、做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元樂至做網(wǎng)站,已為上家服務(wù),為樂至各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792
實際上算法核心思想沒變,只是表達(dá)的語法不一樣,一個是在Java語法下的表達(dá),一個是在c語言下的表達(dá)。java中的方法和C語言中的函數(shù)差不多,在java中也可以叫函數(shù)吧,但是java中的方法有繼承,重載等一些列功能。
Scanner是Java提供的讀取系統(tǒng)輸入(如鍵盤輸入)或者讀取文件流的一個類。讀取鍵盤輸入時,與BufferedReader基本功能相同。
scanf是C語言中的一個輸入函數(shù),與printf函數(shù)一樣,都被聲明在頭文件stdio.h里,因此在使用scanf函數(shù)時要加上#include 。(在有一些實現(xiàn)中,printf函數(shù)與scanf函數(shù)在使用時可以不使用預(yù)編譯命令#include 。
如果是JDK5的話可以用java.util.Scanner http://gceclub.sun點(diǎn)抗 點(diǎn)吸煙 /Java_Docs/html/zh_CN/api/index.html Scanner 使用分隔符模式將其輸入分解為標(biāo)記,默認(rèn)情況下該分隔符模式與空白匹配。
第一,jni方式調(diào)用c接口。通過將c語言接口封裝為jni的方式直接供java語言調(diào)用,這個可以說是最慣用的方式。第二,jna方式調(diào)用c接口。jna也是其中一種調(diào)用c接口的方式。使用時可以加載動態(tài)庫.dll或.so,然后調(diào)用庫中的接口。
要在java中調(diào)用c語言的庫,需要使用Java提供了JNI。
(1)創(chuàng)建DLL文件使用某一種C/C++開發(fā)工具創(chuàng)建DLL文件,實現(xiàn)某一功能,供Java調(diào)用,例如本文在此使用Visual studio 2005創(chuàng)建一個名為testdll的動態(tài)庫文件。(2)使用JNIJNI是Java Na***tive Interface的縮寫,中文為Java本地調(diào)用。
要不就使用內(nèi)部類 要不就在Customer里面定義一個Cart類的對象。也可以把你需要的方法定義成靜態(tài)方法 public static void xxxx();Class.xxxx();來調(diào)用。。
VC調(diào)試(TC或BC用TD調(diào)試)時按Alt+Alt+6和Alt+5,打開匯編窗口、內(nèi)存窗口和寄存器窗口看每句C對應(yīng)的匯編、單步執(zhí)行并觀察相應(yīng)內(nèi)存和寄存器變化,這樣過一遍不就啥都明白了嗎。
JNIEXPORT void JNICALL Java_testdll_set (JNIEnv *, jclass, jint);這里JNIEXPORT和JNICALL都是JNI的關(guān)鍵字,表示此函數(shù)是要被JNI調(diào)用的。
第一,jni方式調(diào)用c接口。通過將c語言接口封裝為jni的方式直接供java語言調(diào)用,這個可以說是最慣用的方式。第二,jna方式調(diào)用c接口。jna也是其中一種調(diào)用c接口的方式。使用時可以加載動態(tài)庫.dll或.so,然后調(diào)用庫中的接口。
具體調(diào)用步驟如下:首先創(chuàng)建Java文件 HelloJni.java ,并創(chuàng)建native方法。編譯Java文件并生成java頭文件。創(chuàng)建C語言文件,HelloWorld.c。生成動態(tài)鏈接庫文件 libhello.so。設(shè)置動態(tài)鏈接庫文件的目錄。
你選擇用匯編或者c語言來實現(xiàn)并在java語言中調(diào)用他們 下面我們開始編寫HelloWorld程序,由于涉及到要編寫c/c++代碼因此我們會在開發(fā)中使用Microsoft VC++工具。
要在java中調(diào)用c語言的庫,需要使用Java提供了JNI。
JNA 通過這個 Class 類型,根據(jù)指定的 dll/.so 文件,動態(tài)創(chuàng)建接口的實例。2 ,接口中你只需要定義你需要的函數(shù)或者公共變量,不需要的可以不定義。
只用指明dll文件所在的文件路徑+文件名稱,不用帶后綴。根據(jù)DLL接口類型,一一對應(yīng)JAVA類型。直接new MyCallbackImpl() 回調(diào)實現(xiàn)類,然后傳遞給config。
一般那種c#的dll是java不能直接調(diào)用的,但C\C++可以,你可以使用JNI。
java通過jna調(diào)用c++/c的.dll/.so庫接口 1。通過jni技術(shù)可以實現(xiàn)java調(diào)用so文件(這個自己實現(xiàn)了,以前的日志也有,并沒有用jni來調(diào)用dll文件,原因是自己對這個不熟啊,不知道怎樣生成dll文件。。)。
VC調(diào)試(TC或BC用TD調(diào)試)時按Alt+Alt+6和Alt+5,打開匯編窗口、內(nèi)存窗口和寄存器窗口看每句C對應(yīng)的匯編、單步執(zhí)行并觀察相應(yīng)內(nèi)存和寄存器變化,這樣過一遍不就啥都明白了嗎。
java 不支持函數(shù)指針 java可以用接口實現(xiàn)類似函數(shù)指針的用法,這種方法叫做代理模式,最簡單的代理模式就可以實現(xiàn)類似的在這種用法,本質(zhì)使用接口實例來代替函數(shù)對象。
不能。必須自己再寫一個dll封裝一次。因為java調(diào)用本地方法是有命名規(guī)則的,你們廠家提供的函數(shù)是掉不到的。
用JNI技術(shù),就是把那個函數(shù)再經(jīng)過Java JNI規(guī)范包裹一下,讓Java可以調(diào)用包裹的函數(shù)。
和其他不帶參數(shù)方法一樣用,就是傳入相應(yīng)的參數(shù)即可。
而jint是以JNI為中介使JAVA的int類型與本地的int溝通的一種類型,我們可以視而不見,就當(dāng)做int使用。函數(shù)的名稱是JAVA_再加上java程序的package路徑再加函數(shù)名組成的。
具體調(diào)用步驟如下:首先創(chuàng)建Java文件 HelloJni.java ,并創(chuàng)建native方法。編譯Java文件并生成java頭文件。創(chuàng)建C語言文件,HelloWorld.c。生成動態(tài)鏈接庫文件 libhello.so。設(shè)置動態(tài)鏈接庫文件的目錄。
可以看一下上面自動生成的程序,程序include了jni.h,這個頭文件在 $JAVA_HOME下的include文件夾下. 還可以發(fā)現(xiàn)生成的函數(shù)名是在之前的函數(shù)名前面加上了Java_HelloNative。
(1)創(chuàng)建DLL文件使用某一種C/C++開發(fā)工具創(chuàng)建DLL文件,實現(xiàn)某一功能,供Java調(diào)用,例如本文在此使用Visual studio 2005創(chuàng)建一個名為testdll的動態(tài)庫文件。(2)使用JNIJNI是Java Na***tive Interface的縮寫,中文為Java本地調(diào)用。
要在java中調(diào)用c語言的庫,需要使用Java提供了JNI。
要不就使用內(nèi)部類 要不就在Customer里面定義一個Cart類的對象。也可以把你需要的方法定義成靜態(tài)方法 public static void xxxx();Class.xxxx();來調(diào)用。。
對于已生成的.h頭文件,C/C++所需要做的,就是把它的各個方法具體的實現(xiàn)。然后編譯連接成庫文件即可。再把庫文件拷貝到JAVA程序的路徑下面,就可以用JAVA調(diào)用C/C++所實現(xiàn)的功能了。接上例子。
本文題目:java調(diào)用c語言函數(shù) java能調(diào)用c的接口嗎
網(wǎng)頁網(wǎng)址:http://chinadenli.net/article13/dioscds.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、網(wǎng)站建設(shè)、定制開發(fā)、靜態(tài)網(wǎng)站、電子商務(wù)、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容