python - 如何将脚本语言实现到 C 应用程序中?

标签 python c scripting lua

我有一个 C 应用程序,我想包含一个脚本语言以将某些功能放入脚本中。我只是没有这方面的经验,也不知道从哪里开始(仍在学习 C 并试图理解应用程序)。

我的应用程序和脚本之间的嵌入和通信实际上是如何工作的?我想我需要脚本语言的解释器作为库(Windows 上的 .dll 或可以编译到我的应用程序中的 C 源代码)?然后我可以做类似的事情吗

interpreter->run("myscript", some_object);

脚本如何知道对象的属性?假设我的脚本想要读取或修改 some_object->some_field?

是否有针对这种嵌入进行了优化的脚本语言?我知道 Lua 在游戏开发中很流行,而像 Python、Perl、PHP 或 Ruby 这样的语言似乎更适合作为独立应用程序,但我对深层架构的了解不允许进行更有根据的猜测:) (标记为 Lua 和 Python,因为它们是我的最爱,但只要它们在 x86 Windows、Linux 和 Mac OS X 上运行,我对其他脚本语言持开放态度,只要它们易于在 C 应用程序中实现)

最佳答案

路亚。它占用空间非常小,速度相当快,我发现它(主观上)拥有与 C 交互的最令人愉快的 API。

如果您想从 C 中访问 Lua 对象 - 使用内置 API 非常容易。如果您想接触来自 Lua 的 C 数据 - 这需要更多工作,通常您需要制作包装器方法来公开您想要允许 Lua 修改的内容。

小型代码库和对引入嵌入式解释器的默认库数量的严格控制也意味着您可以对安全性做出合理的假设。

唯一奇怪的部分是从 1 开始的数组编号,但是,考虑到迭代器的存在,与我想象的相比,这并不是什么大问题。

如何与 C 集成:Lua 的分发 tarball 有一个目录“etc”,其中包含一些非常有用的示例,可以让您快速入门。特别是 - etc/min.c 展示了如何启动解释器,使其解释文件,并使其调用 C 函数(在这种情况下为“print”)。从那里开始,您可以阅读 Lua 文档和发行版中包含的标准库的源代码。

关于python - 如何将脚本语言实现到 C 应用程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1158396/

相关文章:

python - 使用 multiprocessing.Pool().map 更改传递给它的变量的值

python - ScrollArea 中的自定义小部件正在被压缩!

c - openmp for 循环

c - 打印十进制值而不是指针

shell - UNIX 脚本 - 查找文件 - 显示日期

python - 读取二部图

python - 更改 python 打打印新率

c++ - 基本 C/C++ 解释

linux - 在linux中更改密码从文件中获取值

MySQL如何根据用户ID值将数据从一个表复制到另一个表