从零开始的Lua/C++绑定

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

我不感兴趣第三方库,我想在更基本的层面上理解它 - 谢谢 :)

以下是我的问题:

  1. 我根据我所读到的信息,推断 Lua 只能绑定到静态 C 函数。这正确吗?
  2. 这是否意味着要绑定 C++ 类的实例,我需要先为每个方法和属性 getter/setter 写静态函数,接受一个实例指针作为参数。
  3. 然后我将这些函数注册到 Lua 中。
  4. 我会向 Lua 传递 C++ 类的实例指针。
  5. 从 Lua 中,我将调用其中一个已注册的函数,传递 C++ 实例指针。
  6. 静态函数取消引用指针,调用相应的方法。

这样说有道理吗?或者我理解错了什么?

感谢您阅读到这里。

点赞
用户2112028
用户2112028

这正好适合我。

  1. Lua... 它实际上不会绑定到任何东西,你需要做的是“与Lua和谐相处”,这需要了解一些关于Lua的工作方式的知识。

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

这就告诉你Lua实际上能够做什么。因此,Lua提供给你的函数让你只能操作这些结构。

之后,一切都会更加清晰明了。

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

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

  1. 不是很对,记住你对于对象(和Lua的表/元表)有一个很好的“self”/“this”标识符 - 你不绑定到方法。

你希望Lua调用你的某个函数,该函数带有一个“self”参数,该“self”(不管它是什么,一个简单的整数ID,或者如果你感到危险的话,一个void*)应该告诉你你正在使用哪个对象。

3/4/5/6不是很有意义,请阅读那份文档:) 如果您需要更多或有更具体的问题,请在回复中发表评论,这不是一个坏问题,只是有些天真。

2013-12-11 15:17:46