从C ++访问Java类的最佳方法? (比直接使用JNI更好)

时间:2008-10-07 21:31:50

标签: java c++ mixing

我必须在一个非常大的C ++应用程序中集成一个大型Java库。解决方案是使用JNI,但这需要手动编写所有类的代码。例如,Python有一个很好的解决方案,使用JPype(http://jpype.sourceforge.net/)自动化该过程(尽管由于C ++和Python的不同性质,相同的解决方案不能应用于C ++。)

谢谢,

达斯

5 个答案:

答案 0 :(得分:4)

SWIG是一个工具,可让您自动生成从一种语言到另一种语言的绑定。它支持C ++和Java以及其他十几种语言。

答案 1 :(得分:1)

似乎我的问题不够明确。也许混淆来自JNI允许在展位方向进行访问......

我想要做的是从C ++访问Java库。也就是说,有人给我一个包含JAVA编译类集合的JAR文件,我必须用C ++编写代码来访问它(因为我想将该Java库的功能集成到C ++应用程序中)。

希望这澄清了访问的方向:)

谢谢,

达斯

答案 2 :(得分:0)

不确定这个商业工具是否让生活更轻松,但您可能想探索 - http://www.teamdev.com/jniwrapper/index.jsf

答案 3 :(得分:0)

JNA并不是你想要的,但它确实让你的生活更轻松。它不需要任何样板/生成代码 - 您只需为要调用的方法编写接口。

当然,完全有理由使用JNA而不是JNI。

答案 4 :(得分:0)

我有两条建议可能适合您,也可能不适合您:

首先,你可以尝试一些非常简单的事情。在单独的进程中运行Java代码,并使用管道或套接字与其进行通信。这很容易做到,并且不需要任何疯狂的库。缺点是通信有限(只是一些简单的管道),你需要在它周围编写自己的包装来发送数据

其次,这个图书馆究竟是什么?也许我们可以建议一些非Java编写的替代方案,这些替代方法在C ++应用程序中使用会更容易吗?