制作All in one的Lua包
打算把luasocket打包到lua标准包里面,没想到遇到了循环依赖的问题.解决问题后,备忘如下:
static const luaL_Reg lualibs[] = {
{"", luaopen_base},
{LUA_LOADLIBNAME, luaopen_package},
{LUA_TABLIBNAME, luaopen_table},
{LUA_IOLIBNAME, luaopen_io},
{LUA_OSLIBNAME, luaopen_os},
{LUA_STRLIBNAME, luaopen_string},
{LUA_MATHLIBNAME, luaopen_math},
{LUA_DBLIBNAME, luaopen_debug},
{LUA_SOCKETLIBNAME, luaopen_socket_core},
{LUA_MIMELIBNAME, luaopen_mime_core},
{NULL, NULL}
};
#define LUA_SOCKETLIBNAME "socket"
#define LUA_MIMELIBNAME "mime"
luasocket还在源码包里附带了一下lua源文件,但是没有放到一个合适的目录架构里.
可以参照luasocket_bin的目录结构来放置.需要注意的是,集成到lua里面后,原来 socket目录
里面的core.dll和mime目录里面的core.dll已经不再需要了. 如果不把原来的两个 socket.lua mime.lua
文件改名的话, 会出现由于 内置库 >.lua > .dll 的优先关系,导致外部的 .lua 文件被已经内置的库屏蔽的错误.
socket.lua => socket_init.lua --这个是非常重要的
mime.lua => mime_init.lua--这个是非常重要的
local socket = require("socket.core") => local socket = require("socket")
local mime = require("mime.core") => local mime = require("mime")
没有其他注意事项了.
end of file.