【发布时间】:2013-12-29 14:25:33
【问题描述】:
我是 Lua 的新手,并试图了解一些基础知识。我想了解的是将 Lua 绑定到 C++ 实例。
我对第三方库不感兴趣,我想从更基础的层面了解这一点 - 谢谢 :)
这是我的问题:
- 根据我的阅读,我的假设是 Lua 只能绑定到静态 C 函数。这是正确的吗?
- 这是否意味着要绑定 C++ 类的实例,我首先需要为我想要的每个方法和属性 getter/setter 编写静态函数,并接受实例指针作为参数。
- 我会用 Lua 注册这些函数。
- 我会向 Lua 传递一个指向 C++ 类实例的指针。
- 我会从 Lua 调用其中一个注册函数,传递 C++ 实例指针。
- 静态函数取消引用指针,调用等效方法。
这有意义吗?还是我做错了什么?
感谢您阅读本文。
【问题讨论】:
-
绑定不同的语言通常是通过 C 接口完成的(ABI 最好为 C 定义)。我对 lua 不够熟悉,无法了解详细信息,但我的建议是选择库解决方案。您将重新发明轮子,让它像现有解决方案一样圆润可能并非易事。至少,看看这些库是做什么的。
-
谢谢,但我特别想了解 Lua 的原理,用于我不想(不允许)使用第三方库的用例。我研究了几个库,但我只对它的工作原理感兴趣,而无法从库中掌握这一点(高度抽象,大量阅读)。
-
许多使用 Lua-C++ 绑定的第三方库都是开源的。你总是可以看看他们是如何做事的,以了解他们。 警告购买者。