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

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

谢谢,

达斯

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

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

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

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

谢谢,

达斯

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

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

当然,有充分理由使用JNA而不是JNI。

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

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

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