c++ - 如何在运行时编译 C++ 代码(如 Python 中的 eval)?

标签 c++ pipe system

我正在运行时编译一些 C++ 代码,然后在某种插件系统中调用这些代码,另请参阅我的 other问题。我所做的是创建源代码,将其写入文件,编译该文件并将输出写入另一个文件。然而,这个过程感觉有点丑陋,所以我希望得到一些意见。

//Open a file
std::ofstream fout("SOURCECODEPATH");

//Write actual function to file
fout << "extern \"C\" void testFunc(float testArray[]) {\n"
        "    testArray[0] = 1.0;\n"
        "    testArray[1] = 2.0;\n"
        "    testArray[2] = 3.0;\n"
        "}" << std::endl;

//Compile the file, and write the stdout and stderr to PROCESSOUTPUTPATH using "&>"
system("c++ -shared -fPIC -std=c++14 SOURCECODEPATH -o COMPILEDLIBRARYPATH &> PROCESSOUTPUTPATH");

//Read PROCESSOUTPUTPATH (not implemented)

目前它正在创建 3 个文件,SOURCECODEPATHCOMPILEDLIBRARYPATHPROCESSOUTPUTPATH。但是,我宁愿不将 SOURCECODEPATHPROCESSOUTPUTPATH 写入操作系统,而是让它们在内部使用。因此,将源代码通过管道(?)传递给进程并取回输出(最好拆分为 stderr 和 stdout)。最简单的方法是什么?

最佳答案

请重新考虑您的操作。 C++ 和 Python 在很多方面都是非常不同的语言,尤其是在它们的构建和执行模型方面。运行时编译似乎非常不可能真正解决您的潜在问题(您没有与我们分享)。简而言之,C++ 的设计目的不是支持这一点,而是 Python。

从技术上讲,有a few solutions for runtime compilation of C++ ,但与 Python 中的 eval 相比,它们需要更多的管理和工作。但是,它们非常专业,同样,不太可能成为解决您的潜在问题的好方法。

关于c++ - 如何在运行时编译 C++ 代码(如 Python 中的 eval)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55387656/

相关文章:

c++ - 使用元组累加器减少推力

c++ - 我可以禁止临时对象作为参数吗?

sas - 使用 SAS 宏从 Windows 目录通过管道传输文件名列表

c# - 使用 SystemMediaTransportControls 从其他应用程序获取当前播放的歌曲信息

internet-explorer - res :/iefram. dll 打印空白页

linux - 如何将 linux lscpu 命令与 windows cpu 信息映射

c++ - 遇到 C++ 整数和数学问题

c++ - 为什么DLIB要计算LBP统一描述符的平方根?

c - 进程通信: send * commands,为什么循环

python - 什么时候应该在子进程中使用 `wait` 而不是 `communicate`?