草庐IT

c++ - 如何将C++类构造函数注册到Lua userdata并默认使用

使用LuaCAPI,我向Lua注册了一个简单的Object类,如下所示://MyC++ObjectclassclassObject{private:doublex;public:Object(doublex):x(x){}};//CreateandreturninstanceofObjectclasstoLuaintobject_new(lua_State*L){doublex=luaL_checknumber(L,1);*reinterpret_cast(lua_newuserdata(L,sizeof(Object*)))=newObject(x);luaL_setmetatabl

c++ - LuaL_openlibs() 和沙盒脚本

我正在将Lua(5.1)嵌入到C/C++应用程序中。我正在使用LuaL_openlibs()函数加载基础库。但是,此函数加载了一些我想禁用的其他库,以便我的Lua脚本无法使用它们。具体来说,我想禁用IO和OS模块。有没有我可以调用的函数来以编程方式禁用(或卸载)这些模块,以便我可以创建一个安全的沙箱环境来运行Lua脚本? 最佳答案 luaL_openlibs只是遍历在同一个文件中声明的库加载器列表。只需删除/注释掉luaopen_io和luaopen_os行。完成。如果您不喜欢编辑Lua源代码,那么您可以定义自己的函数,省去这两个库