如何从C++中调用Java方法是最简单的方式?

4
我正在编写一个C++程序,需要能够读取复杂和晦涩的文件类型。我已经有一个Java程序来处理这些文件,其中包括将它们转换为更简单的文件格式的功能。我的想法是,每当我的程序需要从复杂文件中读取信息时,调用Java方法将其转换为更简单的文件类型,然后将其写入临时文件,以便我的程序可以轻松读取。这些文件足够小,性能是可以接受的。我正在使用Qt编写我的程序,并在Windows Vista机器上运行它。
我已经研究了使用Java本机接口(JNI),但是我越看越觉得应该尽量避免使用它。还有更好的方法来完成这个任务吗,或者我应该继续使用JNI方法?
5个回答

5

你需要多久做一次这个操作?如果不是很频繁,你可以花钱在那里完成。只需生成命令行即可执行。JNI 可以工作,但是设置起来有点麻烦。一旦设置好了,它应该可以正常工作。


3
为什么不为Java算法创建可执行的JAR文件呢?

2
使用GCJ将Java代码转换为库文件,以便于链接。

这可能会像JNI一样麻烦,但至少您不会再加载或依赖于JRE。


1

你可能会对SWIG感兴趣。"SWIG是一种软件开发工具,它将用C和C++编写的程序与各种高级编程语言连接起来。SWIG可与多种类型的语言一起使用,包括常见的脚本语言,如Perl、PHP、Python、Tcl和Ruby"


OP似乎想要相反的方式。SWIG看起来很有趣。 - Raphaël Saint-Pierre

1
如果GCJ是您的选择,它将允许您将Java程序编译为本地代码,并将其作为库与C++(特别是g++)程序链接,以及一个包含所有Java内容的直接CNI映射到C++的头文件-从包到命名空间,从类到类,从方法到成员函数等。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接