我正在运行时编译一些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)。最简单的方法是什么?
答案 0 :(得分:2)
请重新考虑您在做什么。 C ++和Python在许多方面都是非常不同的语言,尤其是在它们的构建和执行模型中。看来非常不太可能将运行时编译真正解决您的根本问题(您尚未与我们共享)。简而言之,C ++并非旨在支持此功能,Python则被设计为支持这种功能。
从技术上讲,有a few solutions for runtime compilation of C++,但是与Python中的eval
相比,它们需要更多的管理和工作量。但是,它们非常专业,因此再次不可能很好地解决您的基本问题。