我是新手,将Lua嵌入到C ++中,目前正在尝试学习和磨练我的技能,然后将lua嵌入到更大的项目中。
这是我的C ++代码:
int main()
{
int result=0;
lua_State *L = luaL_newstate();
static const luaL_Reg lualibs[] =
{
{ "base", luaopen_base },
{"math",luaopen_math},
{"table", luaopen_table},
{"io",luaopen_io},
{ NULL, NULL}
};
const luaL_Reg *lib = lualibs;
for(; lib->func != NULL; lib++)
{
lib->func(L);
lua_settop(L, 0);
}
int status=luaL_dofile(L,"example.lua");
if(status == LUA_OK)
{
result = lua_pcall(L, 0, LUA_MULTRET, 0);
}
else
{
std::cout << " Could not load the script." << std::endl;
}
printf("\nDone!\n");
lua_close(L);
return 0;
}
example.lua:
print("Hello from Lua")
print(3+5)
x=math.cos(3.1415)
print(x)
输出结果为:
Hello from Lua
8
Could not load the script.
Done!
虽然我正在使用luaopen_math加载数学库(或者我认为我正在加载),但似乎math.cos函数无效。
可能发生了什么?如果有一种更简单的方法可以加载所有Lua库以便能够运行复杂的Lua脚本,请解释一下。