在基于C ++的应用程序上工作,它接受用户输入并生成C ++函数并编译它以创建.so文件并将该函数链接到主应用程序。目前不得不拨打外部命令" g ++"去做吧。想知道是否可以调用某种功能,比如说,"编译"它将代码片段作为输入并生成.so。更确切地说,我需要一个具有以下语法的函数:
sizeOfObjBuf = compile(codeBuf, objBuf);
第一个参数是包含代码片段的以空字符结尾的字符串,第二个参数是保存已编译代码的输出缓冲区,它返回已编译代码的大小。
整个想法是摆脱对外部程序(g ++)的依赖,以便应用程序可以在任何Linux系统上运行(即使它没有安装g ++)。
感谢。
答案 0 :(得分:1)
我害怕答案是"没有"。
答案 1 :(得分:1)
您可以通过在单独的进程中执行G ++(或其他一些编译器)并等待它完成来实现该功能,但这仍然需要用户安装编译器。
如果没有C ++编译器,就无法编译C ++代码。
答案 2 :(得分:1)
我不打算进行研究以弄清楚它是如何完成的,但我相信LLVM C ++编译器可以这种方式使用。 LLVM的所有部分都被设计为在理论上作为库运行。
好的,一点点研究,我发现了这个:http://clang.llvm.org/docs/LibTooling.html