【问题标题】:Generating C++ code at runtime, compiling and running it在运行时生成 C++ 代码,编译并运行它
【发布时间】:2010-09-24 11:04:08
【问题描述】:

是否有可以链接到任何软件的多平台 c++ 编译器?

假设我想在运行时生成 c++ 代码,编译并运行它。 我正在寻找一个紧凑的解决方案(一堆类),最好是 LGPL/BSD 许可证:)

据我所知,它可以在 Java 和 c# 中完成。 C++呢?

【问题讨论】:

  • 请注意,C++ 编译可能很慢,所以不要期望每秒重新编译整个 C++ 脚本 60 次。此外,准备好为您的项目添加一些依赖项。
  • 请注意Java/C#运行在虚拟机之上,C++需要编译为本机代码。
  • @Bobby:这并不总是正确的,某些 Java 构建是 JIT 的,C# 编辑也是如此:没关系,误解了那个答案的含义......
  • 也许不是 C++,但对于纯 C,您可以使用 libtcc(即微型 c 编译器作为库),它真的很小

标签: c++ compiler-construction multiplatform


【解决方案1】:

也许CLang 的模块之一会有所帮助? C++ 方面还没有枯竭,但肯定会很快。

【讨论】:

    【解决方案2】:

    我不知道任何 C++ 的开源代码,但如果您想要小巧紧凑的脚本并且不依赖 C++,LUA 可能是您的选择

    【讨论】:

      【解决方案3】:

      我会完全放弃 C++ 并使用 Google V8。如果您想使用 C++,因为使用您的应用程序的人只知道这一点,那么使用 javascript 应该没有困难。

      而且速度非常快。 Javascript 也是一门很酷的语言。

      【讨论】:

      • 出于性能考虑,我正在考虑使用 C++。我想知道与类似的 c++ 代码相比,v8 运行 js 代码要慢多少。
      • V8 可以及时编译,所以绝对应该进行基准测试。然而,我相信 V8 的易用性将抵消您尝试即时编译 C++ 代码时遇到的问题。
      【解决方案4】:

      我几年前在 Linux 中通过将 C++ 代码生成到文件中,通过 shell 执行(使用 gcc)对其进行编译,然后动态链接到生成的库中。平台之间的动态链接当然不同。

      【讨论】:

      • 我也做过一次(解析器正在计算一个方程,C 代码是即时生成的)。问题是您需要一个完整的开发环境,您必须将其与您的应用程序一起部署。在 linux 上这通常不是问题,但在其他平台上却是。此外,这种方法存在安全风险。恕我直言,即使在需要速度的情况下,脚本也很出色。
      【解决方案5】:

      这种事情在 C++ 中要困难得多,因为该语言不使用将机器细节抽象出来的虚拟机(或“运行时”)。

      您可以查看 gcc,它在 GPL IIRC 下,并且所有主要平台都存在端口。

      【讨论】:

        【解决方案6】:

        当我们研究脚本时,我们选择了 AngelScript,因为它与 C++ 相似。 V8 很棒,但它肯定仅限于某些平台,AngelScript 更容易编译并且可能更容易学习(如果你来自 C++),并且它具有 zlib 许可证。 http://www.angelcode.com/angelscript/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-27
          • 1970-01-01
          • 1970-01-01
          • 2020-07-23
          • 2017-12-16
          相关资源
          最近更新 更多