繁体   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