从解释器中获取 Swig lua 对象

我有时会在我的 C++ 代码中直接从解释器获取 lua 变量,但与 Swig 无关,例如

lua_getglobal( mpLuaState, varname );
double var = lua_tonumber(mpLuaState, -1);
lua_setglobal( mpLuaState, varname );

当我尝试使用

void * = lua_touserdata(mpLuaState, -1);

来获取一些自定义对象时,我发现 SWIG 使用 SWIG_NewPointerObj 封装自定义对象。

有没有办法获取指向我的自定义对象的指针值?

@edit

我刚刚想到了一个解决方法。 我添加了一个导出到 lua 的类方法,

unsigned long GetPtr();

它返回

return (unsigned long)this;

然后,当我想从 C++ 代码(与指针Lua_state *有关但不与 Swig 有关)中获取它时,运行带有

luaL_doString("ptrVal = MyObj:GetVal")

的脚本,然后将其作为普通数字获取并解析为void *

这只是一个解决方法,我想做得更好。有什么建议吗?

点赞