我来这里是为了问这个问题,因为这个网站过去对我非常有用,似乎有很多知识渊博的用户,即使有时候是形而上学的,也愿意讨论这个问题。而且因为谷歌搜索它不起作用。
Java有一个编译器,然后它有一个可以动态编译java的JDT库(例如在JasperReports中用于将报告模板转换为Java代码)。
我的问题:有没有人知道一个库/项目可以在c / c ++中提供编译作为一组库类。例如:一组类来执行预处理,解析,CodeOptimization,当然还有二进制渲染到可执行映像,如ELF或Win格式。基本上允许人们编译c或c ++ scriptlet作为应用程序的一部分。
答案 0 :(得分:14)
是的:llvm。特别是clang。至少,这就是他们宣传项目的方式。另外,请检查this question。如果你决定使用llvm可能是相关的。
答案 1 :(得分:5)
您可以根据需要调整LLVM项目中的内容。
答案 2 :(得分:4)
您可以只需要安装编译器,然后调用它。这是一个相当大的要求,但关于真正“嵌入”C或C ++的唯一方法。您可以嵌入interpreters,但目前这似乎是一个糟糕的选择,因为脚本中使用的任何库都必须安装开发版本(即头文件和源代码/编译库),并且这些库可以限制为解释器支持的功能集(例如模板实现的质量)。
你最好使用像Python或Lua这样的语言来嵌入。
答案 3 :(得分:1)
有ch解释器,但我没有使用它。通常,对于脚本类型应用程序,使用更自然的脚本语言。
答案 4 :(得分:1)
大。看起来LLVM就像我追求的那样。 非常感谢您的反馈。 我不是主要用C ++作为脚本语言。我注意到Python被用作嵌入式脚本引擎。 我的主要原因有两个:
为什么强加你的代码而不像RTTI这样通常不够的bload。相反,可以选择性地生成附加功能。但开发人员必须选择何时以及如何使用这些额外的代码。