【问题标题】:Are there any programs out there that will convert Java code to C++?是否有任何程序可以将 Java 代码转换为 C++?
【发布时间】:2011-03-25 21:29:18
【问题描述】:

是否有任何程序可以将 Java 代码转换为 C++?

【问题讨论】:

  • 你为什么想要这样的东西?
  • 您到底在寻找什么?您是否在寻找可读的 C++(您不会得到)?您是否正在寻找更容易链接到 C++ 项目的东西?我怀疑您是否可以在任何合理的平台(可能是 C 编译器)上获得 C++ 而不是 Java 编译器,如果您试图规避 iOS 开发者协议 3.1.3 的限制,这根本行不通。
  • @David:我使用 gcj for mingw 从 java 代码创建静态链接的二进制文件。无需强制用户安装 JRE 即可部署它们。
  • 请注意,Java 代码可以通过 JNI(Java 本地接口)在 C++ 应用程序中使用。有关问题的详细信息不足,无法了解您是否对此感兴趣。

标签: java c++ converter


【解决方案1】:

Java 是一种与 C++ 完全不同的语言。代码可能必须从头开始完全重写。即使有 Java 到 C++ 的编译器:

  • 它不适用于所有 Java 代码。
  • 它不会编写看起来像是由 C++ 程序员编写的代码。
  • 它可能不会使用普通的 C++ 或 STL 类型,因此即使它是有效的 C++,它也不会与任何其他代码很好地集成。

您可以将compile一些 Java 代码转换为本机代码。也许这对你来说是一个更好的方法。

【讨论】:

  • 其实可以这样。至少,您可以用 C++ 编写一个 JVM,并将 Java 代码编译为嵌入到 C++ 程序中的 JVM。或者,您可以使用 Java 编译器并拥有 C++ 后端,以及 C++ 编写的运行时。当然,这只有在你有 C++ 编译器而没有 Java 编译器的情况下才有用,因为在任何地方都无法以惯用方式做到这一点。
  • 实际上,本地代码编译听起来是个不错的选择,尤其是如果您的专长在于 java 而不是 c++ 中的一些“工具”解释
【解决方案2】:

【讨论】:

  • eton - 有趣的是,这是我搜索的第一个谷歌结果之一。您在测试项目中使用这个(如果有的话)遇到了什么问题。有没有玩得不好的库??
  • 我没有用它做很多事情,因为这只是出于好奇。我提到的基本项目是不同图形的面积计算应用程序,至少数学库(或我需要的部分)运行良好,只需按照说明进行正确重命名。但是,根据其他用户的建议,我会随时选择本机代码解决方案。我没有看到我发布的应用程序有很多潜力,但这是我可以为原始问题提供的最佳示例。
  • 是的,除非我真正了解它们的作用,否则我总是对“转换”实用程序保持警惕。这些决定最终会影响你理解正在发生的事情的整个能力
【解决方案3】:

erotsppa - 在浏览这个问题之前,我不知道任何事情。几年前,我们研究了一些从 java 到 c# 的工具,并取得了不同程度的成功。

无论如何,谷歌搜索(我相信你已经完成了)出现了一些有趣的结果:

http://www.euclideanspace.com/software/language/xes/userGuide/convert/javaToCpp/index.htm http://www.scicontrols.com/R2J.htm

吉姆

【讨论】:

    【解决方案4】:

    有可能。

    但是两种语言的风格如此不同,以至于生成的 C++ 代码看起来与 C++ 完全不同,因此难以维护。

    真正的问题是你为什么要这么做?

    【讨论】:

      【解决方案5】:

      JC 虚拟机将 Java 字节码转换为 C,然后编译并运行: http://jcvm.sourceforge.net/

      如果您只想在 C++ 应用程序中使用 Java 库(反之亦然),那么您应该考虑使用 GNU 编译器集合中的 gcj。它是一个 java->native 代码编译器。 C++ 编译器具有特定的扩展,可以与使用 gcj 编译的代码进行互操作,这意味着您基本上可以使用用 Java 编写的模块,就好像它是用 C++ 编写的一样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-28
        相关资源
        最近更新 更多