2009-07-10 227 views
4

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

我已经研究过使用Java本地接口,但越多我看它越多似乎我应该不惜一切代价避免它。有没有更好的方法来实现这一点,还是应该继续使用JNI方法?

回答

6

你需要多久做一次?如果不是那么频繁的话,你可以在那里卖出去做。只需生成命令行即可。 JNI的工作原理,但设置起来有点痛苦。一旦你有了它,它应该工作得很好。

3

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

1

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

+0

OP似乎想要相反。虽然SWIG看起来很有趣。 – 2009-07-10 18:14:18

1

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

2

使用GCJ将Java变成一个lib供您链接到。

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

相关问题