簡體   English   中英

在C ++中使用腳本語言

[英]Using scripting language in C++

我的問題有點愚蠢,但我決定問像你們中的一些高級程序員。 因此,我想制作一個“動態” C ++程序。 我的想法是對其進行編譯,然后再進行編譯(可能使用諸如python之類的腳本語言)來更改程序代碼。 我知道您會告訴我,編譯后我無法更改代碼,但是有這樣做的方法。 謝謝!

您可以使用外部庫中的插件來設計模塊化體系結構。 例如,您可以使用命令模式 這樣,您可以動態加載主程序后生成的代碼。 您將不得不修復一個接口。 Windows api中的諸如GetProcAddress之類的功能可能是一個不錯的起點。

對於動態編碼和快速原型制作,我建議您看一下Lua 該引擎非常小,易於集成到c ++程序中。

在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.

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