[英]How to compile c++ code at runtime (like eval in Python)?
我正在運行時編譯一些C ++代碼,然后在某種插件系統中調用它們,另請參見我的其他問題。 我要做的是創建源代碼,將其寫入文件,編譯該文件,然后將輸出寫入另一個文件。 但是,此過程有點麻煩,因此我希望提供一些輸入。
//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並非如此。
從技術上講,有一些解決方案可用於C ++的運行時編譯 ,但與Python中的eval
相比,它們需要更多的管理和工作量。 但是,它們非常專業,因此再次不可能很好地解決您的基本問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.