中国的朝贡体系:Java调用dll与C++通信(包括.dll文件的制造)
来源:百度文库 编辑:偶看新闻 时间:2024/10/02 17:10:34
大局思路分为三步: java 方的代码开发;VC++方的代码开发; 如何在Tomcat下的安排使得java web能够拜会此DLL接口。
第一局部:java 方的代码开发
第一步:在java方用Eclipse修建一个java web的Project.
第二步:在源文件目录下,修建一个CallSoftDll类,代码如下:
Java代码
保留后,并发生,万一发生获胜;继续往下看。
第三步:敞开项目所在目录下的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++代码
网站能够直接调用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++代码
第三步:编辑com_mycompany_call_CallSoftDll.def文件,代码如下:
C++代码
第四步:
发生项目(迅捷键为: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 方的代码开发
第一步:在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!!"); } }
package com.mycompany.call;/** * @author sech * * @version 1.0 */public class CallSoftDll {public native static int get();public native static void set(int i);static {System.loadLibrary("com_mycompany_call_CallSoftDll");}public static void main(String[] args) {// TODO 积极生成措施存根CallSoftDll test = new CallSoftDll();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
/* DO NOT EDIT THIS FILE - it is machine generated */#include/* Header for class com_mycompany_call_CallSoftDll */#ifndef _Included_com_mycompany_call_CallSoftDll#define _Included_com_mycompany_call_CallSoftDll#ifdef __cplusplu***tern "C" {#endif/* * Class: com_mycompany_call_CallSoftDll * Method: get * Signature: ()I */JNIEXPORT jint JNICALL Java_com_mycompany_call_CallSoftDll_get (JNIEnv *, jclass);/* * Class: com_mycompany_call_CallSoftDll * Method: set * Signature: (I)V */JNIEXPORT void JNICALL Java_com_mycompany_call_CallSoftDll_set (JNIEnv *, jclass, jint);/* * Class: com_mycompany_call_CallSoftDll * Method: add * Signature: (II)I */JNIEXPORT jint JNICALL Java_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
/* DO NOT EDIT THIS FILE - it is machine generated */#include/* Header for class com_mycompany_call_CallSoftDll */#ifndef _Included_com_mycompany_call_CallSoftDll#define _Included_com_mycompany_call_CallSoftDll#ifdef __cplusplu***tern "C" {#endifint i = 0; jiao.jiaoxuefa.com/* * Class: com_mycompany_call_CallSoftDll * Method: get * Signature: ()I */JNIEXPORT jint JNICALL Java_com_mycompany_call_CallSoftDll_get (JNIEnv *, jclass){return i;}/* * Class: com_mycompany_call_CallSoftDll * Method: set * Signature: (I)V */JNIEXPORT void JNICALL Java_com_mycompany_call_CallSoftDll_set (JNIEnv *, jclass, jint j){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
;十八淑女坊 com_mycompany_call_CallSoftDll.def : Declares the module parameters for the DLL.LIBRARY "com_mycompany_call_CallSoftDll"DESCRIPTION 'com_mycompany_call_CallSoftDll Windows Dynamic Link Library'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主从之间的断开重连
JAVA中如何调用别的语言(如C++)已写好的DLL文件
java怎样调用c写的服务?
C++builder4创建及调用DLL
c语言与Java
JAVA与C的区别?
JAVA与C的区别?
java与c的区别?
WINXP操作系统下面是否可以调用*.DLL,与API函数??
通信与信息系统专业复试的综合科目包括哪些?
java.dll
java调用的问题。
vb调用dll出错
.dll动态链接调用?
直接调用dll
DLL静态调用
asp调用dll出错
VB调用DLL
VB调用MFC DLL
易趣dll页面调用
C#如何调用.DLL
什么是c#.net与java那个好??
c语言与JAVA的关系
C++builer与JAVA的对比???
C与JAVA的区别,特别是算法