簡體   English   中英

如何在運行時編譯C ++代碼(如Python中的eval)?

[英]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個文件, SOURCECODEPATHCOMPILEDLIBRARYPATHPROCESSOUTPUTPATH 但是,我寧願不將SOURCECODEPATHPROCESSOUTPUTPATH寫入操作系統,而是在內部使用它們。 因此,將源代碼通過管道(?)傳遞到進程,並返回輸出(最好拆分為stderr和stdout)。 最簡單的方法是什么?

請重新考慮您在做什么。 C ++和Python在許多方面都是非常不同的語言,尤其是在它們的構建和執行模型中。 這似乎不太可能,運行時編譯是真正解決你的根本問題(你有沒有與我們分享)。 簡而言之,C ++並非旨在支持此功能,而Python並非如此。

從技術上講,有一些解決方案可用於C ++的運行時編譯 ,但與Python中的eval相比,它們需要更多的管理和工作量。 但是,它們非常專業,因此再次不可能很好地解決您的基本問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM