【问题标题】:Bind existing C variable to Lua using Lua C API使用 Lua C API 将现有 C 变量绑定到 Lua
【发布时间】:2013-02-08 16:15:03
【问题描述】:

几年前,我使用 luabind 将 C++ 对象绑定到 Lua,反之亦然。有一种方法可以将现有(通过 C++ 代码中的 new 运算符分配)对象绑定到 Lua 并在如下脚本中使用它:

binded_object.property = new_value

现在我正在开发一个新项目,我想在其中添加一些脚本。为了简单起见,不需要任何提升或任何繁重的模板。所以我的问题是如何只使用 Lua C Api 来做到这一点?

不幸的是,我遇到的所有示例都显示了如何将自定义 C++ 类型绑定到 Lua,然后在脚本中创建该类型的新对象,最后将对象返回给 C++。

【问题讨论】:

  • 为了简单起见,不需要任何提升或任何繁重的模板。 提升是为了简化事情,你知道吗?我的 Lua API 包装器包含你称之为“重模板”的东西,适合大约 500 个 LoC。
  • 我确实意识到它是为了简化事情。我也喜欢 boost 但不适合这个特定的项目。目标不是使用任何依赖项,而是使用 Lua 本身。
  • 标准库也是你的依赖吗?
  • 真的很重要吗?问题是如何使用没有 boost 或模板的 Lua C Api 来做到这一点。
  • 我假设您也不会使用标准库容器(如vectorset 等),因为它们使用模板?我可能会回答你的问题,但要求不明确。

标签: c++ binding lua


【解决方案1】:

你想要SWIG。没有 Boost,没有繁重的模板,只有您可能想要的所有绑定,为了您的方便而自动生成。

现在,您的问题并不完全清楚:“仅 Lua C Api”可能是指“在我自己编写的代码中手动进行所有 Lua C API 调用”。如果这就是您的意思,请从去过那里的人那里获取:您实际上并不想这样做。这既困难又没有回报,而且你什么也得不到。使用 SWIG。如果需要,您可以手动编辑它生成的绑定,但使用 SWIG。

【讨论】:

    猜你喜欢
    • 2021-05-19
    • 1970-01-01
    • 2011-11-19
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 2012-06-05
    相关资源
    最近更新 更多