例如,有时我会从与swig不相关的C ++代码中直接从解释器获取lua变量
lua_getglobal( mpLuaState, varname );
double var = lua_tonumber(mpLuaState, -1);
lua_setglobal( mpLuaState, varname );
当我尝试使用
拍摄一些自定义对象时void * = lua_touserdata(mpLuaState, -1);
我意识到SWIG使用SWIG_NewPointerObj包装了自定义对象。
有什么方法可以获取指向我的自定义对象的指针值?
@edit
我刚刚想出了解决此问题的方法。 我在使用Swig导出到lua的类中添加了方法,
unsigned long GetPtr();
正在返回
return (unsigned long)this;
,然后当我想从C ++代码中获取它(与Swig不相关,而仅指向Lua_state*
的指针)时,
使用
luaL_doString("ptrVal = MyObj:GetVal")
,然后将其作为普通数字并将其解析为void*
这只是解决方法,我想正确地做。 有什么建议么?