我试图让 Lua 使用新的编程语言 D。一切正常(库、lua52.dll 等)但luaL_getmetatable
崩溃。本来dlua中没有定义该函数,但我添加了它:
//C #define luaL_getmetatable(L,n) (lua_getfield(L, LUA_REGISTRYINDEX, (n)))
void luaL_getmetatable(lua_State* L, const(char)* s) {
lua_getfield(L, LUA_REGISTRYINDEX, s);
}
但是当我运行时:
L = lua_open();
luaL_openlibs(L);
// prevent script kiddies
luaL_dostring(L, "os = nil; io = nil");
// reprogram 'print'
luaL_newmetatable(L, "vector");
luaL_getmetatable(L, "vector"); // CRASH
它崩溃了。任何想法为什么会这样?