要在java中調(diào)用c語(yǔ)言的庫(kù),需要使用Java提供了JNI。

目前創(chuàng)新互聯(lián)已為上1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、興和網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
首先創(chuàng)建Java文件 HelloJni.java ,并創(chuàng)建native方法。編譯Java文件并生成java頭文件。創(chuàng)建C語(yǔ)言文件,HelloWorld.c。生成動(dòng)態(tài)鏈接庫(kù)文件 libhello.so。設(shè)置動(dòng)態(tài)鏈接庫(kù)文件的目錄。
它有一個(gè)關(guān)鍵字native,表明這個(gè)方法使用java以外的語(yǔ)言實(shí)現(xiàn)。方法不包括實(shí)現(xiàn),因?yàn)槲覀円胏/c++語(yǔ)言實(shí)現(xiàn)它。
需要JNI(Java Native Interface)技術(shù)即,本地調(diào)用接口。可以將C、C++、VB等其他編程語(yǔ)言編制的程序代碼封裝成對(duì)用戶不可見(jiàn)的底層class。而在java程序中僅聲明其方法名和參數(shù)表以及返回值即可。
因此,要在C語(yǔ)言中調(diào)用Java類文件,需要先編寫(xiě)一個(gè)Java本地方法,然后使用JNI技術(shù)調(diào)用該方法。在編寫(xiě)Java本地方法時(shí),需要使用Java Native Interface規(guī)定的函數(shù)名和參數(shù)列表,這些函數(shù)名和參數(shù)列表是C語(yǔ)言代碼可以識(shí)別的。
但可以把C的源代碼用C的某種編譯器編譯成二進(jìn)制文件,然后在Java中進(jìn)行調(diào)用。
第一步是預(yù)處理,包括語(yǔ)法檢查等工作。gcc -P abc.c第二步由源程序生產(chǎn)匯編語(yǔ)言代碼。gcc -S abc.c 會(huì)生成abc.s文件,這個(gè)文件里就是匯編代碼。第三步編譯器生成目標(biāo)代碼,一個(gè)源文件生成一個(gè)目標(biāo)代碼。
對(duì)于已生成的.h頭文件,C/C++所需要做的,就是把它的各個(gè)方法具體的實(shí)現(xiàn)。然后編譯連接成庫(kù)文件即可。再把庫(kù)文件拷貝到JAVA程序的路徑下面,就可以用JAVA調(diào)用C/C++所實(shí)現(xiàn)的功能了。接上例子。
你選擇用匯編或者c語(yǔ)言來(lái)實(shí)現(xiàn)并在java語(yǔ)言中調(diào)用他們 下面我們開(kāi)始編寫(xiě)HelloWorld程序,由于涉及到要編寫(xiě)c/c++代碼因此我們會(huì)在開(kāi)發(fā)中使用Microsoft VC++工具。
首先需要編寫(xiě)一個(gè)native的java方法。
需要JNI(Java Native Interface)技術(shù)即,本地調(diào)用接口。可以將C、C++、VB等其他編程語(yǔ)言編制的程序代碼封裝成對(duì)用戶不可見(jiàn)的底層class。而在java程序中僅聲明其方法名和參數(shù)表以及返回值即可。
它有一個(gè)關(guān)鍵字native,表明這個(gè)方法使用java以外的語(yǔ)言實(shí)現(xiàn)。方法不包括實(shí)現(xiàn),因?yàn)槲覀円胏/c++語(yǔ)言實(shí)現(xiàn)它。
當(dāng)前題目:java使用c代碼 javac使用方法
鏈接分享:http://chinadenli.net/article36/deesjsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、響應(yīng)式網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)公司、用戶體驗(yàn)、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)