我正在研究如何用脚本功能最佳地扩展C++应用程序,并且我正在查看Python或JavaScript。用户定义的脚本需要能够访问应用程序的数据模型。在C++中嵌入脚本引擎
有没有人有过嵌入这些脚本引擎的经验?有什么潜在的缺陷?
我正在研究如何用脚本功能最佳地扩展C++应用程序,并且我正在查看Python或JavaScript。用户定义的脚本需要能够访问应用程序的数据模型。在C++中嵌入脚本引擎
有没有人有过嵌入这些脚本引擎的经验?有什么潜在的缺陷?
肯定很容易通过使用Boost::Python库(ok,ok,sarcasm)来嵌入Python。当谈到跨语言功能时,没有什么是“轻松”的。 Boost已经做了很多工作来帮助这种发展。我曾经与其中一位开发人员就Boost-> Python界面发誓。他的代码可以由Python中的用户进行编程,并在用户界面中内置REPL。惊人。
但是,使用SWIG和其他语言(如Java)可以更好地观察到我的经验。我目前正在与SWIG合作用Python封装C++。有各种各样的例外,线程,跨语言多态等等。
我会先看看这两个地方。正如我所说,没有东西会“容易”,但这两者都让生活更加宜居。
Boost :: Python,就像在wheaties中的答案一样,是一个非常成熟的解决方案。
Lua以易于嵌入而闻名,但我并没有自己尝试过。
作为R的用户,我更喜欢嵌入R,这可以使用RInside包。一个简单的例子是
#include <RInside.h> // for the embedded R via RInside
int main(int argc, char *argv[]) {
RInside R(argc, argv); // create an embedded R instance
R["txt"] = "Hello, world!\n"; // assign a char* (string) to 'txt'
R.parseEvalQ("cat(txt)"); // eval the init string, ignoring any returns
exit(0);
}
Lua也是嵌入程序的绝佳选择。它非常独立,甚至是本地的跨语言电话系统也不错。
对于JavaScript,您现在最好的选择就是看V8(来自Google),这很容易处理。
你可以用Luabind轻松地在C++中使用Lua。效果很好。 – Nikko 2010-05-25 18:13:17
看看angelscript 简单易用,嵌入c/C++之类的语法。免费和corss平台。你可以在几个小时后开始。
你应该真的考虑Lua,它与C++很好地集成在一起。 – 2010-05-25 18:15:28
嗨托尼小马, 另一种编程语言诞生了。被称为ZetScript我不知道你是否正在寻找脚本引擎,但看一看,以防万一它符合你的需求! http://zetscript.org – 2017-11-28 13:51:12