呵离 2015-12-15 13:45 采纳率: 0%
浏览 4702
已结题

luaL_register替换lua_newtable() + luaL_setfuncs() 不行

int luaopen_libname(lua_State *L)  
{  
    static const luaL_Reg funcs[] = {  
    {"func1", func1},  
        {"func2", func2},  
    {NULL, NULL}  
    };  
#ifdef lua5.1   
//5.1 下直接使用luaL_register 就好   
    luaL_register(L, "libname", funcs);  
#else //lua5.2   
    lua_newtable(L);   
    //先把一个table压入VS,然后在调用luaL_setfuncs就会把所以的func存到table中   
    //注意不像luaL_register这个table是个无名table,可以在的使用只用一个变量来存入这个table。   
    //e.g local clib = require "libname". 这样就不会污染全局环境。比luaL_register更好。   
    luaL_setfuncs(L, funcs, 0);  
#endif   
    return 1;  //返回table   

}  

网上有人给出了这个答案, 我用lua5.1 调用luaL_register() 是没用问题的可以正确运行,但我用lua5.3 调用后面的lua_newtable() 和luaL_setfuncs()没有用是什么原因?>

main 函数是这样

 int main()
 {
 lua_State* L = luaL_newstate();
 luaL_openlibs(L);
luaopen_libname(L);
 if(luaL_dofile(L,"main.lua"))
     printf("error /n");
 }

求解答啊!!!!!!查了很多资料都没有说明

  • 写回答

3条回答 默认 最新

  • devmiao 2015-12-15 15:13
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器