我正在运行时编译一些 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 个文件,SOURCECODEPATH、COMPILEDLIBRARYPATH 和 PROCESSOUTPUTPATH。但是,我宁愿不将 SOURCECODEPATH 和 PROCESSOUTPUTPATH 写入操作系统,而是让它们在内部使用。因此,将源代码通过管道(?)传递给进程并取回输出(最好拆分为 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/