C++调用java的过程
来源:互联网 发布:中国铁矿石进口数据 编辑:程序博客网 时间:2024/06/06 01:32
C++调用java的过程。
这个问题,又为难了我2天,有时是真的很累,当我在苦苦寻找问题的答案的时候,我不知道去咨询谁去,而且解决不了问题的那种郁闷是无法言表的,我就像是一台不自量力的推土机,明明能力不行,可是我却一直干耗,非要解决遇到的问题,否则,其它的事情就做不成,今天就过的不痛快。也许我肯变通,就不会走如此多的弯路,6个月,我的人生暗淡无光。
这个问题,我通过网络上查资料,有的人呢,可能是会的,不愿意把步骤说的很清楚,或者版本很老,又或者是摘抄别人的,还是很老的版本,总之我就不是很明白一些人。摘抄,我觉得可行,但是你为什么不摘抄清楚呢,为什么不总结清楚呢!!!
这个问题,我解决的不全面,以后我会完善补充,看到我写的文档的人,希望你们能够给我提建议,和纠正错误,而不是没用一点的想法,冷漠的走过,那样的话,我觉得真的是毫无意义。
现在先把现在的实验结果记录下来。
C++调用java的过程,我的实验是,用eclipse写一个java类,编译后,用Visual Studio 2013创建C++的控制台应用程序,然后在C++程序中,创建java虚拟机,通过jnienv调用java类。
一、首先是VS2013下环境的配置。这点很重要。
1.配置工程(项目)的属性。
因为要引用<jni.h>头文件,所以要项目中包含它的路径
2.在工程编译,链接的时候,需要jvm.lib静态库。 所以要添加进去。
3.添加jvm.dll的路径到path环境变量下。
有人说,直接把dll文件拷贝到debug目录,也就是与.exe文件相同的目录,还有的说,dll有依赖项,不能这样添加。我就觉得奇怪了。
首先说jvm.dll确实有依赖项,但是它的依赖项是系统提供的。.dll就是一个编译后单独的模块。由于jvm.lib中包含有函数信息,程序中编译需要它,执行时需要jvm.dll。你最好把dll的路径放到path环境变量下,会比较好。
也不要放到C:\Windows\System32下。jvm.dll的位置不要胡乱赋值,但是一定要在path环境变量下面添加它的路径。我所说的路径是把 D:\Program Files\Java\jdk1.7.0_67\jre\bin\server\;或者D:\Program Files\Java\jdk1.7.0_67\jre\bin\client\;添加到环境变量path下。但是添加之后,需要技巧重新启动一次才可以生效。
path下就加添上这两项
【前提是java环境已经配置好在配置好的基础上添加上这2项】
D:\Program Files\Java\jdk1.7.0_67\jre\bin\client\;
D:\Program Files\Java\jdk1.7.0_67\jre\bin\server\;
二、eclipse下编写的类文件
我之所以截这张图,是因为在C++程序中要指明这个路径。
三,VS2013中的C++代码。
上面是一系列的操作,截图都是很完整的。下面把上面提到的几个函数也截个图。
这是一个完整的例子。留作记忆。
查看方法签名的作法:
查看.exe,.dll依赖项的作法。
我所没有完成的是:当调用java类中成员函数 ,不带参数,但是有返回值,执行时会有错误。下去后我会继续研究,和完善自己的文档。
效果截图:
- java调用C/C++的过程
- java调用C/C++的过程
- C函数的调用过程
- C函数的调用过程
- Java语言深入--java调用C/C 的过程
- java 方法调用的过程
- java调用C++的过程?
- C++调用java的过程
- Java语言深入--java调用C/C++的过程
- Java语言深入学习之Java调用C/C++的过程
- C++调用C#组件的制作过程
- C语言头文件的调用过程
- c/c++调用MySql的存储过程
- C语言调用mysql的存储过程
- C#Winform存储过程的调用方法
- 关于C函数的调用过程-栈帧
- c程序的调用过程-----栈帧
- C#SQLServer中存储过程的调用
- Facebook Patch for Dalvik
- java 添加水印文字和图片
- css样式学习笔记七
- 自学QT之UDP发送数据
- Cannot use the diamond generic notation when running in JDK inferior to 1.7 mode
- C++调用java的过程
- Fragment+viewpager切换滑动页面Demo
- CFileDialog获取文件名长度的问题(总结前辈)
- 生成具有目录结构的CAB文件
- Spring MVC常用注解整理
- ehcache 实现缓存共享
- Android自定义Dialog的Match_parent无效问题解决
- Pixhawk---基于NSH的Firmware开发与调试
- 采用maven 对tomcat 进行自动部署