从C ++调用Java方法的最简单方法是什么?

时间:2009-07-10 17:40:21

标签: java c++ java-native-interface

我正在编写一个C ++程序,它需要能够读取复杂而深奥的文件类型。我已经有一个用于处理这些文件的Java程序,其中包括将它们转换为更简单的文件格式的功能。我的想法是,每当我的程序需要从复杂文件中读取信息,让它调用Java方法将其转换为更简单的文件类型,然后将其写入我的程序可以轻松读取的临时文件。文件足够小,性能可以接受。我正在Qt中编写我的程序并在Windows Vista机器上运行它。

我已经研究过使用Java Native Interface了,但是我越是关注它,我就越应该不惜一切代价避免它。有没有更好的方法来实现这一目标,还是应该继续使用JNI方法?

5 个答案:

答案 0 :(得分:6)

您多久需要这样做?如果不是经常那么你可以在那里做出来。只需生成命令行即可完成。 JNI有效,但设置起来有点痛苦。一旦你完成它设置它应该工作正常。

答案 1 :(得分:3)

为什么不为java算法创建一个可执行jar?

答案 2 :(得分:2)

使用GCJ将Java转换为lib以供您链接。

它可能和JNI一样痛苦,但至少你不会再加载或依赖JRE了。

答案 3 :(得分:1)

您可能会对SWIG感兴趣。 “SWIG是一个软件开发工具,它将用C和C ++编写的程序与各种高级编程语言连接起来.SWIG与不同类型的语言一起使用,包括常见的脚本语言,如Perl,PHP,Python,Tcl和Ruby”< / p>

答案 4 :(得分:1)

如果GCJ是您的选项,它将允许您将Java程序编译为本机代码,该代码可以作为库与您的C ++(同样是g ++)程序链接,另外还包含一个包含的头文件所有Java东西的直接CNI映射到C ++ - 包到命名空间,类到类,成员函数的方法等等。

相关问题