制作All in one的Lua包

本文解决将luasocket打包进Lua标准库遇到的循环依赖问题。通过调整目录结构、修改文件名称和内部引用方式,确保库能正确加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

制作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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值