景德镇等你mp3下载:Java调用dll与C++通信(包括.dll文件的制造)

来源:百度文库 编辑:中财网 时间:2024/05/10 09:30:11
大局思路分为三步: java 方的代码开发;VC++方的代码开发; 如何在Tomcat下的安排使得java web能够拜会此DLL接口。
第一局部:java 方的代码开发
第一步:在java方用Eclipse修建一个java web的Project.
第二步:在源文件目录下,修建一个CallSoftDll类,代码如下:
Java代码
    packagecom.mycompany.call; /** *@authorsech * *@version1.0 */publicclassCallSoftDll{ publicnativestaticintget(); publicnativestaticvoidset(inti); static{ System.loadLibrary("com_mycompany_call_CallSoftDll"); } publicstaticvoidmain(String[]args){ //TODO积极生成措施存根 CallSoftDlltest=newCallSoftDll(); test.set(10); //test.add(2,5); //System.out.println(test.add(2,5)); System.out.println("successdfdsfsd!!"); System.out.println(test.get()); System.out.println("success!!"); } }

保留后,并发生,万一发生获胜;继续往下看。
第三步:敞开项目所在目录下的classes目录,我的目录为:
F:/WorkSpace/Project/root/WEB-INF/classes
在这里修建run.bat文件,在文本编辑器中敞开该文件,增加代码如下:
javah -classpath . -jni com.mycompany.call.CallSoftDll
第四步:双击run.bat文件运行后,在该目录下揭示一个com_mycompany_call_CallSoftDll.h文件,代码如下:
C++代码
    /*DONOTEDITTHISFILE-itismachinegenerated*/#include /*Headerforclasscom_mycompany_call_CallSoftDll*/#ifndef_Included_com_mycompany_call_CallSoftDll #define_Included_com_mycompany_call_CallSoftDll #ifdef__cplusplus extern"C"{ #endif /* *Class:com_mycompany_call_CallSoftDll *Method:get *Signature:()I */JNIEXPORTjintJNICALLJava_com_mycompany_call_CallSoftDll_get (JNIEnv*,jclass); /* *Class:com_mycompany_call_CallSoftDll *Method:set *Signature:(I)V */JNIEXPORTvoidJNICALLJava_com_mycompany_call_CallSoftDll_set (JNIEnv*,jclass,jint); /* *Class:com_mycompany_call_CallSoftDll *Method:add *Signature:(II)I */JNIEXPORTjintJNICALLJava_com_mycompany_call_CallSoftDll_add (JNIEnv*,jclass,jint,jint); #ifdef__cplusplus } #endif #endif

网站能够直接调用CallSoftDll类,告终垄断.
到此为止,java方的工作大约告终。
第二局部:VC++方的代码开发
敞开Microsoft Visual C++可视化的工具,修建name为com_mycompany_call_CallSoftDll的项目
第一步:将JAVA_HOME文件夹下的
JAVA_HOME/include/jni.h
JAVA_HOME/include/win32/jni_md.h
和第一局部java项目中生成www.ki7blog.info的com_mycompany_call_CallSoftDll.h
将这三个头文件拷贝到项目标Header files目录下。
第二步:依据头文件编辑Utill.app文件,代码如下。
C++代码
    /*DONOTEDITTHISFILE-itismachinegenerated*/#include /*Headerforclasscom_mycompany_call_CallSoftDll*/#ifndef_Included_com_mycompany_call_CallSoftDll #define_Included_com_mycompany_call_CallSoftDll #ifdef__cplusplus extern"C"{ #endif inti=0; /* *Class:com_mycompany_call_CallSoftDll *Method:get *Signature:()I */JNIEXPORTjintJNICALLJava_com_mycompany_call_CallSoftDll_get (JNIEnv*,jclass){ returni; } /* *Class:com_mycompany_call_CallSoftDll *Method:set *Signature:(I)V */JNIEXPORTvoidJNICALLJava_com_mycompany_call_CallSoftDll_set (JNIEnv*,jclass,jintj){ i=j; } #ifdef__cplusplus } #endif #endif

第三步:编辑com_mycompany_call_CallSoftDll.def文件,代码如下:
C++代码
    ;com_mycompany_call_CallSoftDll.def:DeclaresthemoduleparametersfortheDLL. LIBRARY"com_mycompany_call_CallSoftDll"DESCRIPTION'com_mycompany_call_CallSoftDllWindowsDynamicLinkLibrary'EXPORTS Java_com_mycompany_call_CallSoftDll_add

第四步:
发生项目(迅捷键为:Ctrl+F5).
万一发生项目OK的话,继续下面的工作。
默认在你的项目下揭示你所必需的DLL文件。
我的展目前: D:/XP/Program Files/Microsoft Visual Studio/MyProjects/Utill/Debug文件夹下。
第五步:
点击“组建”菜单,抉择下面的“配制..”
抉择Win32 Release 点击关闭。
第五步:
点击“工程”下的“设置”,抉择“利用MFC作为静态连接库”,点击确定即可。
到这里告终。
再次点击发生项目(迅捷键为:Ctrl+F5)。
万一也未曾问题的话,在
D:/XP/Program Files/Microsoft Visual Studio/MyProjects/Utill/Release文件下会揭示你要的DLL文件。
第六步:差异
Debug和Release文件夹下的两个雷同的DLL文件的差异:
都是告终了java接口的功能。
不同的是Debug目录下生成的那个Dll文件是用在装有Microsoft Visual C++ 6.0环境的机器上的。而Release目录下的那个DLL是用在未曾装过Microsoft Visual C++ 6.0环境的机器上的。
第三局部:
如何在Tomcat下的安排使得java web能够拜会此DLL接口
第一步:将生成的文件放在哪里?有两种情形:
万一是java利用过程调用的话,就放置在我的机器是win xp 我就放在system32文件夹下。
万一是java web 开发的话,即便放置在JAVA_HOME的根目录下的bin文件夹下。
第二步:将eclipse下的java web项目,在tomcat下举行安排,并运行.
到此如何用java 调用DLL文件告终。

注:
当类中有package时举行包.类的打包
生成的dll文件要放在%JAVA_HOME%/bin目录下
另:
dll生成过程未经测验,可能有所疏漏,但dll打包前的环节都是准确的,也能够确保纯熟c++的人获胜生成dll文件(我利用的dll文件是旁人直接生成的,因我不会c++开发 )
参看材料:http://n/redirect.php?tid=308&goto=lastpost
http://om.cn/pcedu/empolder/gj/java/0506/642328.html这绝对不是我们的目标。目标是处理问题,“面向对象”是一种“信念工具”,

Java垄断IM的一些资源(downmoon采集整理)

Redis server主从之间的断开重连