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类中成员函数 ,不带参数,但是有返回值,执行时会有错误。下去后我会继续研究,和完善自己的文档。


效果截图:





0 0
原创粉丝点击