从头开始 Lua/C++ 绑定

use*_*794 5 c c++ oop lua binding

我是 Lua 新手,正在尝试了解一些基础知识。我想了解的是将 Lua 绑定到 C++ 实例。

我对第三方库不感兴趣,我想在更基础的层面上了解这一点 - 谢谢:)

这是我的问题:

  1. 根据我所读到的内容,我的假设是 Lua 只能绑定到静态 C 函数。它是否正确?
  2. 这是否意味着要绑定 C++ 类的实例,我首先需要为我想要的每个方法和属性 getter/setter 编写静态函数,接受实例指针作为参数。
  3. 我会用 Lua 注册这些函数。
  4. 我将向 Lua 传递一个指向 C++ 类实例的指针。
  5. 我会从 Lua 调用注册函数之一,并传递 C++ 实例指针。
  6. 静态函数取消引用指针,调用等效方法。

这有道理吗?还是我弄错了什么?

感谢您阅读本文。

Ale*_*eal 4

这就是我的盟友。

1)Lua ...它并没有真正绑定到东西,你需要做的是“与Lua很好地相处”,这需要了解一些Lua是如何工作的。

我真的建议阅读http://luaforge.net/docman/83 ​​/98/ANoFrillsIntroToLua51VMInstructions.pdf。

这告诉你 Lua 实际上能够做的一切。所以 Lua 提供的函数可以让你操作那些结构。

在那之后一切都变得更有意义了。

为什么这个答案应该在这里结束

你1之后的问题都是错的。1 在语义上是错误的,静态函数只有内部/弱链接。我猜你的意思是“不是一种方法”

2)不是真的,记住你对对象有很好的“self”/“this”身份(以及带有表/元表的lua) - 你不绑定到方法。

你希望 Lua 使用“self”参数调用你的某个函数,“self”(无论它是什么,一个简单的整数 ID,或者如果你感觉危险的话,一个 void*)应该告诉你你正在工作的对象是什么和。

3/4/5/6 确实没有意义,请阅读该文档:) 如果您需要更多或有更具体的内容,请评论回复此内容,这不是一个坏问题,顺便说一句,这只是天真