从C ++调用Lua 5.2的简单查询

时间:2014-02-08 07:43:20

标签: c++ lua

我是新手,将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脚本,请解释一下。

0 个答案:

没有答案