資源描述:
《JAVA如何調(diào)用C或者C生成的dll.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、JAVA如何調(diào)用C或者C++生成的dll本文為在32位 Windows平臺(tái)上實(shí)現(xiàn)?。蔭va本地方法調(diào)用dll的示例。由于對(duì)C語(yǔ)言不是很熟悉,有部分內(nèi)容摘自網(wǎng)絡(luò)。第一步、編寫(xiě)java文件package com。ztsoft。jni;publicclassMyDll{stat(yī)ic{System.loadLibrary("MyDll”);}?publicnativestatic String HelloWord();?publicnativestat(yī)icStringHelloWord(int num);}第二步、編譯生成h文件1、編譯D:\MyEclipse 6.5M1 Blueworkspa
2、cejavaWorkSpacesrc〉javaccom/ztsoft/jni/MyDll.java(生成MyDll。class位于jni目錄下)2、生成h文件D:MyEclipse6.5M1BlueworkspacejavaWo(hù)rkSpacesrc>javahcom.ztsoft.jni。MyDll(生成com_ztsoft_jni_MyDll.h這個(gè)文件位于src目錄下)/*DONOTEDITTHISFILE -itismachine generated*/#include〈jni。h>/*Header for classcom_ztsoft_jni_MyDll*/#ifnd
3、ef _Included_com_ztsoft_jni_(kāi)MyDll#define _Included_com_ztsoft_jni_MyDll#ifdef__cplusplusextern"C" {#endif/* * Class: com_ztsoft_jni_MyDll *Method:HelloWord* Signature:()Ljava/lang/String;*/JNIEXPORTjstring?。蔔ICALLJava_com_ztsoft_jni_(kāi)MyDll_HelloWord__(dá)(JNIEnv *, jclass);/** Class: com_ztsoft_jni_MyD
4、ll *Method: HelloWord *Signature:(I)Ljava/lang/String;*/JNIEXPORTjstringJNICALLJava_com_ztsoft_jni_MyDll_HelloWo(hù)rd__I?。ǎ蔔IEnv*,jclass,jint);#ifdef__cplusplus}#endif#endif第三步、編寫(xiě)C++文件在具體實(shí)現(xiàn)的時(shí)候,我們只關(guān)心兩個(gè)函數(shù)原型。JNIEXPORTjstringJNICALLJava_com_ztsoft_jni_M(jìn)yDll_HelloWo(hù)rd__ (JNIEnv*, jclass);JNIEXPORTjstring
5、JNICALLJava_com_ztsoft_jni_MyDll_HelloWord__I(JNIEnv*,?。阠lass, jint);以下我用的是vs2005編寫(xiě)c程序。1、選擇VisualC++ —>Win32—〉Win32項(xiàng)目(填寫(xiě)項(xiàng)目名稱(chēng)等)點(diǎn)擊確定.這一步選擇DLL,勾選空項(xiàng)目,點(diǎn)擊完成。?然后右擊右側(cè)的源文件,添加新相然后再將com_ztsoft_jni_MyDll。h文件添加到C++的頭文件中(先拷貝到工程下,然后在引入現(xiàn)有項(xiàng))然后拷貝原函數(shù)到MyDll.cpp文件中#include"com_ztsoft_jni_(kāi)MyDll.h"JNIEXPORTjstringJNICAL
6、LJava_com_ztsoft_jni_M(jìn)yDll_HelloWord__(JNIEnv?。?,jclass){?}JNIEXPORTjstringJNICALLJava_com_ztsoft_jni_MyDll_HelloWord__I(JNIEnv*, jclass,?。辏椋睿簦﹞?}注意:一定要把JDK中的include文件夾中(和它下面的win32)的幾個(gè)頭文件拷貝到C++工程文件夾中。然后引入。否則編譯的時(shí)候出現(xiàn)類(lèi)似的錯(cuò)誤根據(jù)頭文件的路徑,修改com_ztsoft_jni_(kāi)MyDll.h修改jni_md。h文件的引入根據(jù)實(shí)際情況,修改MyDll.cpp文件.第四步、編譯生成DLL
7、選擇build-〉rebuild?all對(duì)所寫(xiě)的程序進(jìn)行編譯。點(diǎn)擊build—>build?MyDll。DLL生成DLL文件。位于debug目錄下,將它放置你的jdk的bin目錄,或者system32下.然后編寫(xiě)main方法測(cè)試即可。/***測(cè)試dll方法*?。纏aramargs?。?publicstaticvoidmain(String[]args){?System。out.println(MyDll.HelloWor