有没有一个可以编译C++或C的库?

8
我来这里提问是因为这个网站在过去对我非常有用,似乎有很有知识的用户愿意讨论问题,即使有时候是形而上学的。而且因为使用谷歌搜索并没有找到答案。
Java有一个编译器,然后它有一个JDT库,可以动态编译Java(例如在JasperReports中用于将报表模板转换为Java代码)。
我的问题是:是否有人知道一个库/项目,可以提供一组C/C++库类来进行编译。例如:一套用于执行预处理、解析、代码优化和当然是二进制渲染到可执行图像(如ELF或Win格式)的类。基本上允许将C或C++脚本作为应用程序的一部分编译。

1
当然,二进制渲染为可执行图像,例如ELF或Win格式。这让我有点困惑;那么system("compiler input")不就可以解决问题了吗? - Captain Giraffe
2
你真的想知道如何将C或C++用作脚本语言吗?编译通常是编译。你要么想让一个脚本语言在你的应用程序中运行,要么想弄清楚如何使用外部编译代码。 - thecoshman
5个回答

14

是的:使用 llvm。特别是用 clang。至少,这是它们所宣传的项目。此外,查看 此问题。如果您决定使用 llvm,则可能会相关。


5

你也许可以从LLVM项目中找到适合你需求的内容。


4
您可以要求安装编译器,然后调用它。这是一个相当重要的要求,但也是真正“嵌入”C或C ++的唯一方法。虽然有解释器可以嵌入,但目前似乎不是一个好选择,因为脚本中使用的任何库都必须安装开发版本(即头文件和源/编译库),并且这些库可能会受到解释器支持的特性集的限制(例如模板实现的质量)。
最好使用像Python或Lua这样的语言进行嵌入。

4
为什么会被踩?(我真的想知道我的回答有什么问题。) - Roger Pate
2
在提到适合嵌入式语言时,Python是一个不错的选择。在这种情况下使用Python可能比即时编译更节省资源。 - Rafe Kettler
也许你的回答被投票降低了,因为调用单独的编译器并不是“真正嵌入C或C ++的唯一方法”。 - andref
但是确实如此。Ch不支持所有的C++语言,而clang 一个编译器。 - Roger Pate
@andref:我仍然认为"......about the only way"(大概是唯一的方法)可以获得C和C++的所有功能,包括标准库和第三方库,这些功能被提问者没有明确说明其重要性,在我看来,这是一个必要条件。我注意到你在引用我的话时省略了"about"(大概),而我应该强调"truly"(真正地)。 - Roger Pate
显示剩余2条评论

1

有ch解释器,但我没有使用过。通常对于脚本类型的应用程序,会使用更自然的脚本语言。


1

太好了。看起来LLVM正是我想要的。 非常感谢您的反馈。 我并不是主要寻求C++作为脚本语言。我注意到Python被用作嵌入式脚本引擎。 我的主要原因有两个:

  1. 摆脱Make、CMake和Autoconf等编译过程中的麻烦,用类似Scons的东西代替,并与所有编译阶段进行绑定和交互。
  2. 在解析后钩入编译过程并自动生成代码。特别是元相关的代码。在我的情况下,我已经能够在C++中实现Java的几乎所有功能,除了一个:反射。

为什么要强制在您的代码中添加不必要的RTTI等负担,而这些往往是不足够的。相反,可以有选择地生成附加功能。但开发人员必须选择何时以及如何使用此额外的代码。


哦,亲爱的神明。你正在与C++作斗争。现在我为我的回答感到难过:它会给我带来一些坏的业力。 - andref
嘿嘿,不要担心你的Karma(卡玛)了。情况更可能是另一种情况。 - 640KB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接