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

Best way to access Java classes from C++? (better than using JNI directly)

本文关键字:要好 JNI Java 访问 C++ 方式 最佳      更新时间:2023-10-16

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

谢谢,

Das

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

我的问题似乎不够清楚。也许混乱来自JNI,它允许在展位方向上访问。。。

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

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

谢谢,

Das

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

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

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

我有两个建议,可能对您有效,也可能不适用:

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

第二,这个图书馆到底是什么?也许我们可以建议一些不是用Java编写的替代方案,它们在C++应用程序中更容易使用?