Java中調(diào)用C生成的DLL.doc

ID:62033710

大?。?6.00 KB

頁數(shù):2頁

時(shí)間:2021-04-15

Java中調(diào)用C生成的DLL.doc_第1頁
Java中調(diào)用C生成的DLL.doc_第2頁
資源描述:

《Java中調(diào)用C生成的DLL.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、·JAVA技巧(Java中調(diào)用C/C++生成的DLL) 一、 生成C的頭文件1.編輯Main.java?。饀blicclassMain?  {?publicnativestaticint getStrNum(bytestr[],intstrLen); ?。?  2.生成頭文件 按win+r打開“運(yùn)行"窗口,輸入“cmd”,打開DOS控制臺(tái)窗口。進(jìn)入上面Main。java所在的目錄中,輸入: javac Main。java? javah Main 兩條命令完成后會(huì)生成Main。h文件? 二、 生成DLL ?。保⌒陆展こ獭≡赩S中新建工程:Win32ConsoleApplicat(yī)ion,取名

2、“MakeDLL”,選擇空工程。新建后修改工程屬性:?。ǎ保莈neral中,將“Configuration?。詙pe”改為“DynamicLibrary?。?dll)”; (2)C/C++的General中,將“AdditionalIncludeDirectories”添加兩項(xiàng):?  “C:ProgramFilesJavajdk1.5。0_06include”? “C:ProgramFilesJavajdk1.5.0_06includewin32"? 根據(jù)你安裝的JAVA路徑而設(shè)置,這是因?yàn)樵贑/C++編譯過程中要使用JAVA的jni.h等文件2.將上面生成的Main。h添加入工程?。? 

3、新建一個(gè)新的文件main.cpp,代碼如下: #include’Main。h’#include’string。h’?JNIEXPORTjint JNICALLJava_Main_getStrNum(JNIEnv*env,jclasscls,jbyteArraystr, jint strLen)? {jbyte*buffer=(*env).GetByteArrayElements(str,0); buffer[strLen]= ’’;//由于JAVA自動(dòng)分配空間,需要傳進(jìn)來字符串長(zhǎng)度參數(shù) jintlen=strlen((char*)buffer); return?。靍n;  } 4。按F7編譯

4、鏈接,生成MakeDLL.dll文件?  三、JAVA調(diào)用DLL 在JAVA中使用上面生成的DLL文件:?1。將MakeDLL.dll復(fù)制到與使用DLL的JAVA文件相同的目錄下.?  2。JAVA文件的源代碼:public?。悖欤醩sMain? ?。tatic??。鸖ystem.loadLibrary(’MakeDLL’); }publicnativestaticint getStrNum(bytestr[],?。椋睿簟trLen);?publicstat(yī)icvoidmain(String[]args)? {??。蚢ininstance=newMain();?Stringstr=ne

5、wString(’haha’);intnum=instance.getStrNum(str.getBytes(),str.length());?。觵stem.out。println(num); }? ?。? 總結(jié):?另外,JAVA與DLL函數(shù)的參數(shù)傳遞過程,考試,大提示像int類型的,可以直接從JNI函數(shù)參數(shù)列表中獲?。欢鴶?shù)組元素則要通過JNIEnv來獲?。? jbyte*buffer=(*env).GetByteArrayElements(str,0); //str是參數(shù)列表中jbyteArray變量同理可以獲?。鉮ar[]的元素?! 『瘮?shù)返回時(shí),可以直接用return語句返回。也可以設(shè)置

6、參數(shù)列表中的變量指針來返回: (*env).SetByteArrayRegion(byteArray,0,128,byteArr); byteArray是參數(shù)列表中的jbyteArray變量,作為指針用來返回需要返回的信息;byteArr是jbyte*類型,里面存放的值是要返回的內(nèi)容。? 其它的信息可以從Google或Baidu中通過查找“jni”或“java調(diào)用DLL"來查閱到.

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

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

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