gpt4 book ai didi

lua - D Lua 不能被元化

转载 作者:行者123 更新时间:2023-12-04 19:40:00 24 4
gpt4 key购买 nike

我正在尝试让 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

它崩溃了。任何想法为什么会这样?

最佳答案

听起来您使用的是古老的 dlua绑定(bind),而不是 LuaD , 一直有 luaL_getmetatable .

但是,这些绑定(bind)以及您的代码都适用于 Lua 5.1,而不是 5.2;确保链接到正确版本的 Lua。 Lua 5.2 中没有 lua_open(在 5.1 中已弃用)。

如果您在链接到正确的库后遇到同样的问题,我建议您在编译 Lua 时设置宏 LUA_USE_APICHECK 并再次尝试查看到底出了什么问题。

关于lua - D Lua 不能被元化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10316585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com