在C++中嵌入脚本引擎

4 投票
5 回答
3375 浏览
提问于 2025-04-15 23:09

我正在研究如何为一个C++应用程序添加脚本功能,想看看是用Python还是JavaScript。用户自己写的脚本需要能够访问这个应用程序的数据模型。

你们有没有在嵌入这些脚本引擎方面的经验?有什么潜在的问题吗?

5 个回答

4

如果你不太确定要用Python还是JavaScript,我建议你可以考虑使用Lua。Lua是专门为嵌入式脚本设计的,这样就避免了和C、C++之间很多重复的功能。而且,只要你在代码和Lua引擎之间使用C可以调用的函数,嵌入Lua其实挺简单的。

如果你想用C++的接口,可以看看LuaBind。这个工具可以让你在Lua中创建一个类,并且这个类可以继承你在C++中写的类。

7

Lua是一种很适合嵌入到其他程序中的语言。它的设计非常紧凑,使用起来也很方便,甚至它自己提供的跨语言调用系统也不错。

至于JavaScript,现在最好的选择是使用V8引擎(来自谷歌),这个引擎使用起来相对简单。

6

Boost::Python 库来嵌入 Python 确实很简单(好吧,开个玩笑)。在不同编程语言之间实现功能可不是件“简单”的事。Boost 在这方面做了很多工作,帮助开发者更好地进行跨语言开发。我曾和一位开发者合作过,他非常信任 Boost->Python 接口。他的代码可以让用户用 Python 编写,并且在用户界面中内置了一个交互式命令行,真是太棒了。

不过,我的经验是使用 SWIG 和其他语言,比如 Java,效果更好。我现在正在用 SWIG 把 C++ 包装成 Python。这个过程中会遇到各种问题,比如异常处理、线程、跨语言的多态性等等。

我建议你先看看这两个地方。正如我所说,没什么会是“简单”的,但这两个工具会让你的开发生活更轻松一些。

撰写回答