C++ 如何绑定C++;使用luaapi的成员方法和成员变量?
到目前为止,我所做的所有谷歌搜索都发现了一些非常接近的东西,但并没有完全符合我的意图 让我用最基本的方式来描述这一点:C++ 如何绑定C++;使用luaapi的成员方法和成员变量?,c++,lua,C++,Lua,到目前为止,我所做的所有谷歌搜索都发现了一些非常接近的东西,但并没有完全符合我的意图 让我用最基本的方式来描述这一点: 假设你有一个C++类 class A { public: int Method(); int Variable; }; 现在想象你实例化了一个*Foo 现在,假设您有一个带有3行函数的.lua文件: function Test() local n = Foo:Method(); Foo.Variable = 0; local m =
-
假设你有一个C++类
class A
{
public:
int Method();
int Variable;
};
function Test()
local n = Foo:Method();
Foo.Variable = 0;
local m = Foo.Variable;
end
- 创建新图元表(MT)
- pushvalue(-1)(我真的不明白这个)
- 设置字段(-2,“\u索引”)
- pushcfunction的静态版本的方法,该方法从checkudata解包a*指针
- 设置字段(-2,“方法”)
- 使用newuserdata创建指向Foo的指针
- 可设置元表(MT)
- 使用Foo设置global以使lua可以使用该名称
- 通过全局名称,用上面提到的3行.lua调用一个测试函数
程序,这样如果表中存在密钥,返回第一个,否则就去GETT/SETTER。
LUA没有C++ API,你必须使用C++的C API,只使用基本的C API,而不是第三方的东西。那你就完蛋了。毫不夸张地说。把C++对象暴露给Lua是非常复杂的,如果你不想使用外部库,你注定要重新实现它们。OP拒绝使用它们。他在C++中明确地编码了,然后我简单地说:他应该使用C++包装器。