java - 从 C++ 使用 Java

标签 java c++ cross-platform

作为一名 C++ 开发人员,我偶尔会遇到像 iText 这样的 Java 库。 , Batik , JasperReports , 和 JFreeChart .在每种情况下,等效的跨平台 C++ 库似乎都不太成熟、更昂贵或不可用。

在我的 C++ 应用程序中使用这些 Java 库进行报告、制图和类似操作是否实用?如果是这样,这样做的最佳方法是什么?

  • 使用 JNI 在我的应用程序中嵌入 JVM?
  • 使用 GCJ 将 Java 库编译为 native 代码?
  • 我不知道的其他一些集成方法?
  • 放弃吧,因为从 C++ 调用 Java 库太难而不实用,而是投入精力寻找 C++ 库?

最佳答案

最不复杂的集成方法是老式的 UNIX 方法:启动一个小型 Java 程序来完成您需要的任务,并在 STDIN/STDOUT 上与它通信。

这可能并非在所有情况下都可行,但绝对适用于 PDF、SVG、报告和图表等主要涉及生成单个文档以供保存或显示的用例。

如果您采用这种方法,请注意 log4j、slf4j、JUL 等的日志记录! Java 程序写入标准输出的任何内容都可能破坏您在 C++ 程序中收到的文档。在这种情况下,禁用日志记录或使用套接字可能更好。

关于java - 从 C++ 使用 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3830629/

相关文章:

java - RabbitMQ 对 EC2 性能的挑战

c++ - 未定义的方法引用

c++ - 为什么我的数组传递的大小不正确?

c# - MVVM交叉更新错误: does not contain a definition for 'EndingWith' and no extension method 'EndingWith'

java - 如何验证 java 中的文本字段

java - 使用 Jackson 解析 geojson

java - 如何在 R 或 java 中进行栅格数据同化( 3dVar )?

c++ - 使用 StyleSheet 悬停时 qt 加宽 QScrollBar

c++ - 从 Eclipse 调试 Visual Studio 构建

c# - 从默认库跨平台 Xamarin 选择多个图像