Lua/C++从头开始绑定

Lua/C++ binding from scratch

本文关键字:绑定 从头开始 C++ Lua      更新时间:2023-10-16

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

我对第三方图书馆不感兴趣,我想从更基本的层面了解这一点-谢谢:)

以下是我的问题:

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

这有道理吗?或者我做错了什么?

谢谢你读到这里。

这是我的盟友。

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)应该告诉你正在使用什么ojbect。

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