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");
}
求解答啊!!!!!!查了很多资料都没有说明