Lua:在本机 lua 中编译,但在 C++ 中使用 LuaJIT 和 sol2 时出错

Lua: Compiles in native lua but error in C++ with LuaJIT and sol2

我有以下 lua 代码,运行在 an online interpreter 中没问题:

__sprite_properties = {
    events = {}
}

function bind_event(event_name, fun)
    table.insert(__sprite_properties.events, { event_name, fun })
    print(__sprite_properties.events[1][1])
end

foo = function() 
    return 0
end
bind_event("foo_event", foo)

>> foo_event

但是当我尝试使用 sol2 库在 C++ 中加载和 运行 脚本时,我在 table.insert 语句中遇到以下错误:

script.lua:6: attempt to index global 'table' (a nil value)

stack traceback: script.lua:6: in function 'bind_event' -- script.lua:13: in main chunk

我正在使用 LuaJIT 作为 lua 发行版。 用于在 lua 中加载脚本的代码是以下片段:

sol::state lua;
lua.open_libraries(sol::lib::base);
try {
    lua.safe_script_file("script.lua");
}
catch (const sol::error& e) {
    std::cout << e.what() << std::endl;
}

为什么用c++加载这段代码不能正常执行?

您是否在 C++ 代码中加载了标准 Lua 库?您似乎只加载了基础库,而不是 table 库:

lua.open_libraries(sol::lib::base);