繁体   English   中英

使用嵌入式脚本扩展C ++应用程序

[英]Extending a C++ application with embedded scripting

我正在开发一个需要多平台兼容的C ++应用程序(Windows / Linux),并希望授予用户扩展软件以完全满足其需求的能力,而不允许他们更改应用程序的关键部分(所以我不想要他们在C ++代码中)。

我正在寻找的是嵌入一种脚本语言(我更喜欢Python因为我已经熟悉它,但它不是强制性的),所以如果我想要这些对象,那么放在一些插件文件夹中的脚本可以操作应用程序的对象modifyable。

最简单的例子:如果有人想为我的应用程序构建自己的UI,他们应该可以使用这样的脚本来完成。

但问题是,我从来没有把C ++和任何类型的外部脚本放在一起,所以我真的不知道如何开始。 在寻找材料开始之后,我发现Lua声称这是一个很好的语言,但我找不到好的初学者教程。

如果有人知道一个好的起点,无论是在线资源还是一本好书,我真的很感激。 我不介意在一本好书上花几块钱。

作为一个学习者,我倾向于通过混合的示例代码和解释这些代码的几行来学习。

我建议你阅读Lua编程 ,这本书有关于如何在C(和C ++)中嵌入Lua的整个部分。

它受到亚马逊用户的高度评价。

该语言还有很好的在线文档和活跃的邮件列表

如果你想使用Python,我肯定建议使用Boost.Python 这是一个设计精良的图书馆。 举个例子:要将C ++类公开给Python,你需要做的就是:

struct World
{
    void set(std::string msg) { this->msg = msg; }
    std::string greet() { return msg; }
    std::string msg;
};

BOOST_PYTHON_MODULE(hello)
{
    class_<World>("World")
        .def("greet", &World::greet)
        .def("set", &World::set)
    ;
}

它几乎可以自动处理所有内容:类型之间的转换,异常,它甚至允许您使用boost::shared_ptr在两种语言之间使用引用计数对象。

linux日志中的文章是开始如何在c / c ++代码中嵌入python解释器的好地方。 这只是成功的一半,但是当嵌入式解释器时,您需要将部分软件发布到脚本环境中。 这样做的基本API是在C中,如果你的大部分代码都是C ++,那么最好使用boost :: python,因为在你的C ++类中编写C包装可能很麻烦。 您还可以使用Py ++生成boost :: python绑定。

如果您只想使用脚本作为自定义的大门,并且您可以使用python的内存占用,那么它可能是比Lua更好的选择。 Lua通常适合游戏开发等小环境。 除了lua开发人员之外,还有更多的python开发人员以及更多的内置函数和第三方库。

对于Python,我想升级库是为了做到这一点。 至于Lua,我自己并没有使用它,但是快速谷歌搜索首先让我进入debian管理员 ,然后是Lua的C界面 你看过那些吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM