繁体   English   中英

动态使用G ++编译C ++代码段

[英]Compile a C++ code snippet using G++ dynamically

在基于C ++的应用程序上工作时,它需要用户输入并生成C ++函数,然后对其进行编译以创建.so文件,并将该函数链接到主应用程序。 当前必须调用一个外部命令“ g ++”来做到这一点。 想知道是否可以调用某种函数,例如“编译”,它以一个代码段作为输入并产生一个.so。 更准确地说,我需要一个具有以下语法的函数:

sizeOfObjBuf = compile(codeBuf, objBuf);

第一个参数是一个包含代码段的以空终止的字符串,第二个参数是保存已编译代码的输出缓冲区,它返回已编译代码大小的大小。

整个想法是摆脱对外部程序(g ++)的依赖,以便该应用程序可以在任何Linux系统上运行(即使未安装g ++的情况)。

谢谢。

恐怕答案是“否”。

您可以通过在单独的进程中执行G ++(或其他编译器)并等待其完成来实现该功能,但这仍然需要用户安装编译器。

没有C ++编译器,您将无法编译C ++代码。

我不会做研究来弄清楚它是如何完成的,但是我相信LLVM C ++编译器可以这种方式使用。 从理论上讲,LLVM的所有部分都旨在作为一个库运行。

好的,稍作研究,我发现了这一点: http : //clang.llvm.org/docs/LibTooling.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM