该Lua的规范说的package.config(由我添加的编号方式):
- 第一行是目录分隔符字符串.
\对于Windows,默认为' ',/对于所有其他系统,默认为' ' .- 第二行是分隔路径中模板的字符.默认为'
;'.- 第三行是标记模板中替换点的字符串.默认为'
?'.- 第四行是一个字符串,在Windows中的路径中,由可执行文件的目录替换.默认为'
!'.- 第五行是在构建
luaopen_函数名时忽略其前面的所有文本的标记.默认为'-'.
我的解释:
;默认情况下).?默认情况下),它都会将其替换为提供给require或package.searchpath函数的模块名称,并检查该文件是否存在.到目前为止,这么好,但最后两行对我来说并不完全清楚.
我花了一段时间来理解这一点,但最终规范的另一部分给了我一个提示:
此C函数的名称是字符串"
luaopen_"与模块名称的副本连接,其中每个点由下划线替换.此外,如果模块名称具有连字符,则删除其前缀(包括)第一个连字符的前缀.例如,如果模块名称是a.v1-b.c,则函数名称将为luaopen_b_c.
因此,此符号(-默认情况下)旨在同时提供不同版本的库 - 可能使用未加前缀的最新版本的符号链接,以便可以在两个路径上访问相同的库(即在两个模块名称下),但只有一个C符号名称?