选择嵌入式脚本语言用于 C++

我想选择一个嵌入式脚本语言,并将其用于 C++。它应该连接一个像 Oracle 这样的数据库。我的主机应用程序是一个服务器应用程序,它将原始数据传递给脚本。脚本将对数据进行解析并执行一些特定的逻辑。还需要更新数据库。然后脚本将返回原始数据作为结果。

你能帮我选择吗?

谢谢。

原文链接 https://stackoverflow.com/questions/6188798

点赞
stackoverflow用户128645
stackoverflow用户128645

Lua 旨在成为一种嵌入式语言,具有 简单的 API。Python 和 Ruby 更具有通用性,至少在嵌入方面要复杂得多。仅仅出于这个原因,我会选择使用 Lua。

2011-05-31 14:08:40
stackoverflow用户264338
stackoverflow用户264338

Lua已经被提到,并且使用luabind将为您提供更具C++风格的接口。您也可以看看chaiscript。它更适合嵌入到C++中。

2011-05-31 14:20:49
stackoverflow用户131264
stackoverflow用户131264

将以下内容翻译成中文并保留 markdown 格式,将其保存为 test.c:

#include <Python.h>

int
main(int argc, char *argv[])
{
  Py_Initialize();
  PyRun_SimpleString("from time import time,ctime\n"
                     "print 'Today is',ctime(time())\n");
  Py_Finalize();
  return 0;
}

如果您安装了 Python 2.7,请执行以下命令:

gcc test.c -o test -I/usr/include/python2.7 -lpython2.7

现在 Python 已经被嵌入。这个过程只花了不到一分钟,因此我不明白 "嵌入 Python 需要花费大量努力" 的说法。

这个示例来自 http://docs.python.org/extending/embedding.html

虽然 Lua 也很好,但我建议使用 Python。

2011-05-31 14:39:36
stackoverflow用户10111
stackoverflow用户10111

我曾经使用 AngelScript 将嵌入式脚本添加到我的 C++ 应用程序中,并取得了很多成功。我发现它很容易绑定,语法也很舒适,但这取决于你的目标受众。我发现 Lua 非常快速且相对容易绑定,但语法对我来说有点不舒服。AngelScript 很像 C/C++,我觉得很容易理解和维护,但对那些更多时间从事 CSS 或 HTML 工作的人来说,可能会觉得繁琐,语言惯用法可能也不会翻译得很好。

http://www.angelcode.com/angelscript/

http://www.gamedev.net/forum/49-angelcode/

我刚想起来这里曾经回答过一个类似的问题:

https://stackoverflow.com/questions/191222/what-is-a-good-embeddable-language-i-can-use-for-scripting-inside-my-software

2011-05-31 15:31:25
stackoverflow用户207716
stackoverflow用户207716

TCL 会是一个易于嵌入脚本语言的另一个选择。

从个人角度来看,我更倾向于使用那些您或其他将要使用脚本语言的人已经熟悉的语言,尤其是如果最终用户将能够运行自定义脚本,您需要知道他们在其业务领域熟悉的语言(例如 CAD/CAM 使用者可能会熟悉 TCL,游戏使用者可能会熟悉 Lua 等)。

2011-05-31 15:41:27
stackoverflow用户4317960
stackoverflow用户4317960

你可能对ObjectScript感兴趣。

ObjectScript,简称OS,是一种全新的编程语言。它是免费的、跨平台的、轻量级的、可嵌入的和开源的。它结合了多种语言的优点,包括JavaScript、Lua、Ruby、Python和PHP。OS具有Javascript的语法,lua的“多结果”特性,Ruby的语法糖以及PHP和Ruby的神奇方法-甚至更多!

使用ObjectScript的最小程序可能是这样的

#include <objectscript.h>
using namespace ObjectScript;
int main(int argc, char* argv[])
{
    OS * os = OS::create(); //创建ObjectScript实例
    os->require("main.os"); //运行ObjectScript程序
    os->release();          //释放ObjectScript实例
    return 0;
}
2014-12-03 04:54:40