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
クラッシュします。これがなぜであるかについて何か考えはありますか?