繁体   English   中英

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

[英]What is the easiest way to call a Java method from C++?

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM