【问题标题】:Compiling C++ for the JVM为 JVM 编译 C++
【发布时间】:2010-11-19 02:27:07
【问题描述】:

在编译 C++ 时,您当然要为要编译的目标平台使用编译器。是否有针对 JVM 的 C++ 编译器(所以不是使用 Java“本机”接口,而是将 C++ 代码编译为 Java 字节码)?

【问题讨论】:

  • 您问这个问题是因为您有一些想从 Java 中使用的 C++ 库并且您想避免使用 JNI?如果是这样,请记住,如果您的 C++ 代码使用特定于平台的库,那么您将无法在不使用 JNI 的情况下调用它们...
  • @bwawok:哪个 JVM JIT 编译器输出 C++?
  • @KorayTugay 我不知道我在 5 年前写了评论,可能想看看更新的帖子

标签: java c++ compiler-construction


【解决方案1】:

NestedVM 为 Java 字节码提供二进制翻译。这是通过将 GCC 编译为 MIPS 二进制文件来完成的,然后将其转换为 Java 类文件。因此,任何用 C、C++、Fortran 或 GCC 支持的任何其他语言编写的应用程序都可以在 100% 纯 Java 中运行,而无需更改源代码。

【讨论】:

  • 为什么要在 Java VM 中运行 C 或 C++ 程序?
  • @TheLQ 也许 OP 羡慕 C++/CLI?
  • 我实际上是独立发现的(我记得一些关于 GCC MIPS 的东西,所以我用 Google 搜索了“GCC MIPS JVM”)。但回想起来,它已经出现在 SO 的答案中也就不足为奇了。
  • 真的,我感兴趣的原因是 Mathematica 8 现在可以从 Mathematica 代码生成 C。我对在 Java 程序中运行在 Mathematica 中编写的代码感兴趣,而无需使用 MathLink 或其他需要最终用户安装额外软件的技术。真的,这整个想法对我来说只是概念性的。来源:awurl.com/FTlvm62ns
  • @TheLQ:Why on earth would you want to run a C or C++ program in the Java VM?。好吧,对于 C++ 来说,在 JVM 上拥有全功能的 RAII 将是一件好事。和运算符重载。而且,好吧,lambdas... :-D
【解决方案2】:

正如我在类似的SO question 上回答的那样,镇上有一个叫gcc-bridge 的新孩子。它是一个 maven 插件,支持所有 gnu 语言,如 c、c++、fortran。

【讨论】:

    猜你喜欢
    • 2021-02-19
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    相关资源
    最近更新 更多