[英]Using scripting language in C++
我的問題有點愚蠢,但我決定問像你們中的一些高級程序員。 因此,我想制作一個“動態” C ++程序。 我的想法是對其進行編譯,然后再進行編譯(可能使用諸如python之類的腳本語言)來更改程序代碼。 我知道您會告訴我,編譯后我無法更改代碼,但是有這樣做的方法。 謝謝!
在C ++中,這樣做的唯一方法是使用要修改的代碼卸載DLL,修改源代碼,調用編譯器以重新生成DLL,然后重新加載DLL。 它的重量非常非常大,並且只有在要運行代碼的計算機上存在編譯器的情況下,它才起作用。 (通常在Unix下,在Windows下很少。)
諸如Python之類的解釋性語言具有更大的動態性。 例如,Python具有內置函數來將字符串作為Python代碼執行。 如果需要動態可修改的代碼,建議將Python嵌入應用程序中,並將其用於動態部分。
就個人而言,我從未在運行時玩過重新編譯C ++,也沒有打算。 但是,最近我一直在大量嵌入腳本語言。
有人提到了顯而易見的首選嵌入方式:Lua。 Lua是一種非常流行的語言,您可以找到很多有關如何使用它的文檔。 將其集成到C ++中將使您可以在運行時定義所需的行為。
我正在使用的是一種叫Squirrel的奇妙語言。 它很像Lua,但具有本機對象(類)支持和類似C ++的語法。 我設法將其嵌入到C ++應用程序中,並且通過使用sqrat綁定庫,兩種語言都可以輕松共享信息。
我有松鼠建立和初始化我的用戶界面。 結果,需要0編譯才能為我的游戲制作和構造UI。 我打算更進一步,並使用此游戲方面來創建您正在尋找的類似行為(通過動態代碼使用在運行時更改行為)
我建議在這里簽出松鼠: http : //www.squirrel-lang.org/
我打算編寫有關如何嵌入松鼠和安裝綁定庫的教程,但是我還沒有開始使用它們。 如果我還記得的話,一旦完成,我將在以后(可能是幾個月)編輯這篇文章。 同時,自己動手試一試。 您可能會喜歡它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.